Я ищу пример того, как упаковывать типы ext с помощью msgpack в C++, так как я не уверен, как это сделать.
Единственная информация, которую я нашел, находится в этом разделе https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_packer#pack-manually.
Предположим, я хочу упаковать объект типа Foo как тип расширения msgpack с шаблоном класса адаптера. Как использовать pack_ext
и pack_ext_body
? Должен ли я создать «подупаковщик» в шаблоне, вручную упаковать мои данные Foo, а затем передать размер двоичных данных и самих данных в pack_ext
и pack_ext_body
? Это было бы создано, если бы какой-нибудь эксперт по C++ мог привести мне минимальный пример.
MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) {
namespace adaptor {
template<>
struct pack<Foo> {
template <typename Stream>
packer<Stream>& operator()(msgpack::packer<Stream>& o, Foo const& v) const {
// how to use ?
o.pack_ext(size_t l, int8_t type);
o.pack_ext_body(const char* b, size_t l);
}
}
}
}
Заранее спасибо!