// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include #include #include namespace zen { class IoBuffer; class CbPackage; class CompositeBuffer; struct CbPackageHeader { uint32_t HeaderMagic; uint32_t AttachmentCount; uint32_t Reserved1; uint32_t Reserved2; }; static_assert(sizeof(CbPackageHeader) == 16); static constinit uint32_t kCbPkgMagic = 0xaa77aacc; struct CbAttachmentEntry { uint64_t AttachmentSize; uint32_t Flags; IoHash AttachmentHash; enum { kIsCompressed = (1u << 0), // Is marshaled using compressed buffer storage format kIsObject = (1u << 1), // Is compact binary object }; }; static_assert(sizeof(CbAttachmentEntry) == 32); std::vector FormatPackageMessage(const CbPackage& Data); CompositeBuffer FormatPackageMessageBuffer(const CbPackage& Data); CbPackage ParsePackageMessage( IoBuffer Payload, std::function CreateBuffer = [](const IoHash&, uint64_t Size) -> IoBuffer { return IoBuffer{Size}; }); } // namespace zen