int write_protocol_version(Writer &writer) const {
using namespace aether::io::byte_order;
const le_uint64_buf magic = PHYSX_MARSHALLER_MAGIC;
const le_uint16_buf version = PHYSX_MARSHALLER_VERSION;
auto ret = aether::write_all(writer, &magic, sizeof(magic));
if (ret != 0) { return ret; }
ret = aether::write_all(writer, &version, sizeof(version));
std::vector<char> encode() const override {
aether::io::in_memory_writer<char> writer(data);
int ret = write_protocol_version(writer);
const uint8_t compression_on = config.use_zstd;
// Write flag to indicate if compression is enabled
ret = aether::write_all(writer, &compression_on, sizeof(compression_on));
aether::io::zstd_writer<decltype(writer)> compressed_writer(writer);
ret = write_content(compressed_writer);
ret = write_content(writer);