* BlobIds now have a fixed structure, consisting of a server id (a list of identifiers separated by colons, indicating topology of the hierarchy) and content id (a globally unique identifier, which may contain path elements). Expectation is that any node in the storage hierarchy can retrieve a blob by using the server id to navigate the hierarchy until reaching a host that can provide the blob.
* Refs are now explicitly mappings from names to blob ids, and can be queried separately to the blob content. Overloads for transferring blob content inline are defined, for stores that choose to store the payload inline as an optimization.
* Ref queries now specify a time parameter, indicating required coherency of any cached values that may be returned without forwarding the request to the root storage node.
* Default implementation of the blob store now uses MongoDB to store refs (ie. name -> blob id mappings).
* Updated existing use cases to use new API and added tests.
#preflight none
[CL 21625328 by Ben Marsh in ue5-main branch]
- CommitService now writes bundles rather than tree pack objects.
- Legacy TreePack classes removed.
- Added commands for creating, extracting, diffing bundles to Horde Agent and Horde Build (implemented in both places using shared code, in order to account for convenience in configuring the matching storage backend).
- Some bug fixes.
#preflight none
[CL 19176653 by Ben Marsh in ue5-main branch]
2) Enhancements to StringView and a few other helper classes
3) New UE style ignore case comparison
4) Moved shared UHT definitions into a common C# file.
#rb jonathan.adamczewski
#rnx
#preflight 620e3cdc8b6428e701a24666
[CL 19033446 by Tim Smith in ue5-main branch]