diff options
Diffstat (limited to 'zencore/compactbinarypackage.cpp')
| -rw-r--r-- | zencore/compactbinarypackage.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/zencore/compactbinarypackage.cpp b/zencore/compactbinarypackage.cpp index 21883f5b1..9eb67ac93 100644 --- a/zencore/compactbinarypackage.cpp +++ b/zencore/compactbinarypackage.cpp @@ -299,12 +299,12 @@ CbPackage::GatherAttachments(const CbFieldViewIterator& Fields, AttachmentResolv } void -CbPackage::Load(IoBuffer& InBuffer, BufferAllocator Allocator) +CbPackage::Load(IoBuffer& InBuffer, BufferAllocator Allocator, AttachmentResolver* Mapper) { MemoryInStream InStream(InBuffer.Data(), InBuffer.Size()); BinaryReader Reader(InStream); - Load(Reader, Allocator); + Load(Reader, Allocator, Mapper); } void @@ -345,7 +345,7 @@ CbPackage::Load(CbFieldIterator& Fields) } void -CbPackage::Load(BinaryReader& Reader, BufferAllocator Allocator) +CbPackage::Load(BinaryReader& Reader, BufferAllocator Allocator, AttachmentResolver* Mapper) { uint8_t StackBuffer[64]; const auto StackAllocator = [&Allocator, &StackBuffer](uint64_t Size) -> UniqueBuffer { @@ -386,6 +386,14 @@ CbPackage::Load(BinaryReader& Reader, BufferAllocator Allocator) } } } + else if (ValueField.IsHash()) + { + const IoHash Hash = ValueField.AsHash(); + + ZEN_ASSERT(Mapper); + + AddAttachment(CbAttachment((*Mapper)(Hash), Hash)); + } else { ZEN_ASSERT(ValueField.IsObject(), "Expected Object, Binary, or Null field when loading a package"); |