aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/compactbinaryfile.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-06-30 11:07:10 +0200
committerStefan Boberg <[email protected]>2023-06-30 11:07:10 +0200
commit0396f400a97f71bf743d584acc71a0cdbc155566 (patch)
tree829f7764157aecf9c198e4b076e5fb1adcfeb13f /src/zencore/compactbinaryfile.cpp
parentvarious zenhttp fixes from sb/proto (diff)
downloadzen-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.cpp33
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