21template<
typename... Args>
23 (msgpack::pack(buffer, args), ...);
27template<
typename Arg1,
typename... Args>
29 static_assert(!std::is_pointer<Arg1>::value,
"Arg1 cannot be a pointer.");
31 msgpack::object_handle oh;
32 if (!unpacker.next(oh))
33 throw std::runtime_error(
"Error during MsgPack unpacking.");
34 arg1 = oh.get().as<Arg1>();
37 if constexpr (
sizeof...(args) > 0) {
46template<
class RetType,
class... Args>
51 virtual std::ostream&
Write(std::ostream& os, Args... args)
override {
53 os.seekp(0, std::ios::beg);
54 msgpack::sbuffer buffer;
56 os.write(buffer.data(), buffer.size());
58 catch (
const std::exception& e) {
59 std::cerr <<
"Serialize error: " << e.what() << std::endl;
66 virtual std::istream&
Read(std::istream& is, Args&... args)
override {
68 std::string buffer_data((std::istreambuf_iterator<char>(is)), std::istreambuf_iterator<char>());
69 msgpack::unpacker unpacker;
70 unpacker.reserve_buffer(buffer_data.size());
71 std::memcpy(unpacker.buffer(), buffer_data.data(), buffer_data.size());
72 unpacker.buffer_consumed(buffer_data.size());
75 catch (
const msgpack::type_error& e) {
76 std::cerr <<
"Deserialize type conversion error: " << e.what() << std::endl;
79 catch (
const std::exception& e) {
80 std::cerr <<
"Deserialize error: " << e.what() << std::endl;
Delegate serializer interface class.
std::is_const< std::remove_reference_t< T > > is_const_type
Definition bitsery/Serializer.h:21
virtual std::istream & Read(std::istream &is, Args &... args) override
Definition msgpack/Serializer.h:66
virtual std::ostream & Write(std::ostream &os, Args... args) override
Definition msgpack/Serializer.h:51
void make_serialized(msgpack::sbuffer &buffer, Args &&... args)
Definition msgpack/Serializer.h:22
void make_unserialized(msgpack::unpacker &unpacker, Arg1 &arg1, Args &&... args)
Definition msgpack/Serializer.h:28
Definition bitsery/Serializer.h:24
Definition ISerializer.h:12