载入中...
搜索中...
未找到
EvaArchive.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
10#include "asset/EvaManifest.h"
11
12#include <cstddef>
13#include <cstdint>
14#include <span>
15#include <string>
16#include <vector>
17
18namespace eve::asset {
19
22 std::uint64_t maximumArchiveBytes = 4ULL * 1024 * 1024 * 1024;
23 std::uint64_t maximumEntryBytes = 1ULL * 1024 * 1024 * 1024;
24 std::uint64_t maximumDecodedBytes = 8ULL * 1024 * 1024 * 1024;
25 std::uint64_t maximumManifestBytes = 4ULL * 1024 * 1024;
26 std::uint32_t maximumEntries = 100000;
27 std::uint32_t maximumPathBytes = 1024;
28};
29
32 std::string path;
33 std::vector<std::uint8_t> bytes;
34};
35
37struct EvaArchive {
39 std::vector<EvaArchiveEntry> entries;
40};
41
52 const EvaManifest& manifest, std::vector<EvaArchiveEntry> entries, const EvaArchiveLimits& limits = {});
53
62[[nodiscard]] EVENGINE_API_FOUNDATION Result<EvaArchive> parseEvaArchive(std::span<const std::uint8_t> bytes,
63 const EvaArchiveLimits& limits = {});
64
65} // namespace eve::asset
std::unordered_map< std::string, QuestRuntime > entries
Canonical manifest model for EVEngine Asset Archive (.eva) version 1.
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::uint64_t bytes
const AssetImportLimits & limits
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Result< std::vector< std::uint8_t > > buildEvaArchive(const EvaManifest &manifest, std::vector< EvaArchiveEntry > entries, const EvaArchiveLimits &limits)
Build a deterministic ZIP64 .eva, selecting raw Deflate only when smaller than Store.
Result< EvaArchive > parseEvaArchive(std::span< const std::uint8_t > bytes, const EvaArchiveLimits &limits)
Parse and fully verify an untrusted .eva ZIP64 image.
One owning regular-file entry inside an .eva archive.
Definition EvaArchive.h:31
std::vector< std::uint8_t > bytes
Definition EvaArchive.h:33
Admission budgets applied before allocating decoded archive entries.
Definition EvaArchive.h:21
std::uint64_t maximumManifestBytes
Definition EvaArchive.h:25
std::uint32_t maximumPathBytes
Definition EvaArchive.h:27
std::uint64_t maximumArchiveBytes
Definition EvaArchive.h:22
std::uint64_t maximumDecodedBytes
Definition EvaArchive.h:24
std::uint64_t maximumEntryBytes
Definition EvaArchive.h:23
Fully admitted source archive with its typed manifest and payloads.
Definition EvaArchive.h:37
std::vector< EvaArchiveEntry > entries
Definition EvaArchive.h:39
Validated, owning .eva manifest.
Definition EvaManifest.h:62