#pragma once #include #include #include #include #include // https://tuttlem.github.io/2014/08/18/getting-istream-to-work-off-a-byte-array.html class ByteMemBuf : public std::basic_streambuf { public: ByteMemBuf(char* p, size_t l); }; class ByteMemStream : public std::istream { public: ByteMemStream(char* p, size_t l); private: ByteMemBuf buffer; }; struct PartialFragmentMessage { std::string partialFragmentMessage; uint64_t partialFragmentMessageLoc = 0; }; std::vector> fragment_message(std::string_view uncompressedView, uint64_t stride); void decode_fragmented_message(cereal::PortableBinaryInputArchive& inArchive, PartialFragmentMessage& spfm, size_t fragmentMessageStride, std::function runAfterDecoded);