diff options
| author | Stefan Boberg <[email protected]> | 2023-06-30 11:07:10 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2023-06-30 11:07:10 +0200 |
| commit | 0396f400a97f71bf743d584acc71a0cdbc155566 (patch) | |
| tree | 829f7764157aecf9c198e4b076e5fb1adcfeb13f /src/zencore/compactbinaryfile.cpp | |
| parent | various zenhttp fixes from sb/proto (diff) | |
| download | zen-0396f400a97f71bf743d584acc71a0cdbc155566.tar.xz zen-0396f400a97f71bf743d584acc71a0cdbc155566.zip | |
* Added Guid::FromString
* Added LoadCompactBinaryObject from file to compactbinaryfile.cpp/h
* Added SaveCompactBinary(BinaryWriter& Ar, ...) functions
* Added ZEN_PLATFORM_NAME define
* Added SystemMetrics functionality to query system properties (see zencore/system.h)
Diffstat (limited to 'src/zencore/compactbinaryfile.cpp')
| -rw-r--r-- | src/zencore/compactbinaryfile.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/zencore/compactbinaryfile.cpp b/src/zencore/compactbinaryfile.cpp new file mode 100644 index 000000000..f2121a0bd --- /dev/null +++ b/src/zencore/compactbinaryfile.cpp @@ -0,0 +1,33 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "zencore/compactbinaryfile.h" +#include "zencore/compactbinaryvalidation.h" + +#include <zencore/filesystem.h> + +namespace zen { + +CbObjectFromFile +LoadCompactBinaryObject(const std::filesystem::path& FilePath) +{ + FileContents ObjectFile = ReadFile(FilePath); + + if (ObjectFile.ErrorCode) + { + throw std::system_error(ObjectFile.ErrorCode); + } + + IoBuffer ObjectBuffer = ObjectFile.Flatten(); + + if (CbValidateError Result = ValidateCompactBinary(ObjectBuffer, CbValidateMode::All); Result == CbValidateError::None) + { + CbObject Object = LoadCompactBinaryObject(ObjectBuffer); + const IoHash WorkerId = IoHash::HashBuffer(ObjectBuffer); + + return {.Object = Object, .Hash = WorkerId}; + } + + return {.Hash = IoHash::Zero}; +} + +} // namespace zen |