Commit Graph

25 Commits

Author SHA1 Message Date
Ben Marsh
609087ecc0 Horde: Make IStorageClient disposable. StorageService now returns reference-counted proxies for the underlying storage client, preventing errors when rolling over to new instances after the original instance is disposed.
[CL 27914992 by Ben Marsh in ue5-main branch]
2023-09-15 10:31:36 -04:00
Ben Marsh
e0f52d9dde Horde: Enable code style warnings in "Analyze" configuration for Horde.Agent and Horde.Agent.TrayApp, and fix current violations.
[CL 27801345 by Ben Marsh in ue5-main branch]
2023-09-12 14:30:37 -04:00
Ben Marsh
0e4f348199 Horde: Move IStorageClient implementations into the EpicGames.Horde.Storage.Clients namespace.
[CL 27738432 by Ben Marsh in ue5-main branch]
2023-09-09 10:14:12 -04:00
Ben Marsh
96454d2ea1 Horde: Add helper methods for opening file streams and subdirectories from bundles.
[CL 27574082 by Ben Marsh in ue5-main branch]
2023-09-01 20:20:15 -04:00
Ben Marsh
db417ceb75 Horde: Use HTTP range headers for partial object fetches. This works better with redirect URLs, because the parameters are resent to the new location.
[CL 27113564 by Ben Marsh in ue5-main branch]
2023-08-15 14:43:49 -04:00
Ben Marsh
3fcf8b606f Horde: Rename WriteNodeAsync -> WriteRefAsync.
[CL 27059555 by Ben Marsh in ue5-main branch]
2023-08-12 10:20:31 -04:00
Ben Marsh
31a83fc628 Horde: Move bundle implementation into a separate namespace.
[CL 26226699 by Ben Marsh in ue5-main branch]
2023-06-24 16:37:55 -04:00
Ben Marsh
b7f9afb66a Horde: Add a custom handle type for nodes stored in bundles, abstracting implementation details away from most clients.
[CL 26226673 by Ben Marsh in ue5-main branch]
2023-06-24 16:22:48 -04:00
Ben Marsh
db2e9baf50 Horde: Rename BlobLocator -> BundleLocator. The regular API does not allow directly fetching individual blobs by name any more.
[CL 26225915 by Ben Marsh in ue5-main branch]
2023-06-24 10:39:30 -04:00
Ben Marsh
ee56115397 Horde: Remove methods for reading and writing bundles from IStorageClient. This is now an implementation detail specific to types derived from BundleStorageClient.
[CL 26225812 by Ben Marsh in ue5-main branch]
2023-06-24 09:09:10 -04:00
Ben Marsh
dcb955aaef Horde: Rename NodeLocator -> BundleNodeLocator.
[CL 26177183 by Ben Marsh in ue5-main branch]
2023-06-22 05:02:43 -04:00
Ben Marsh
2c12658c40 Horde: Remove HostId and BlobId classes from BlobLocators, and replace them with an opaque path. The backend can decide how to interpret this path as it sees fit.
[CL 26177089 by Ben Marsh in ue5-main branch]
2023-06-22 04:56:06 -04:00
Ben Marsh
d5ffd173f9 Horde: Include a hash in node locators.
[CL 25903979 by Ben Marsh in ue5-main branch]
2023-06-09 16:45:51 -04:00
Ben Marsh
7d5e31784a Horde: Start merging implementations of blobs and nodes in IStorageClient.
* Rename NodeType -> BlobType, NodeData -> BlobData, and NodeHandle -> BlobHandle.
* Add methods to BlobHandle to allow partial reads of payload, and querying refs and type without fetching all data.

[CL 25895881 by Ben Marsh in ue5-main branch]
2023-06-09 11:57:14 -04:00
Ben Marsh
d9c08c3a83 Horde: Prevent direct access to locators in node handles, to allow implementations to delay computation until they have been flushed.
[CL 25850133 by Ben Marsh in ue5-main branch]
2023-06-07 13:19:54 -04:00
Ben Marsh
c6246d9472 Horde: Reverting CL 25709378; storing hashes with node locators/handles removes a lot of complexity, and makes it easier for clients to cache data.
#preflight 647a06955e71ee4db648158f

[CL 25762879 by Ben Marsh in ue5-main branch]
2023-06-02 11:35:51 -04:00
Ben Marsh
f77f72cd32 Horde: More refactoring of storage API to hide bundle implementation details.
- Rename StorageClientBase to BundleStorageClient. The current implementation assumes that bundles will be used for storage.
- Use ReadAsync() methods on NodeHandle to expand content, rather than requiring a TreeReader to be passed around.

#preflight none

[CL 25737520 by Ben Marsh in ue5-main branch]
2023-06-01 15:43:22 -04:00
Ben Marsh
a4e2059326 Horde: Abstract out logic for building bundles into an interface, so implementations can choose not to use it if they desire.
#preflight 6477f5eb313d43282fcf9a9f

[CL 25724155 by Ben Marsh in ue5-main branch]
2023-06-01 08:39:27 -04:00
Ben Marsh
221ce42510 Horde: Remove hashes from node handles by default. A separate HashedNodeHandle type bundles the handle with a hash value for round-tripping data through NodeRef objects.
#preflight none

[CL 25709378 by Ben Marsh in ue5-main branch]
2023-05-31 14:41:23 -04:00
Ben Marsh
193f272227 Horde: Add missing setter for new tool deployments.
#preflight none

[CL 25569028 by Ben Marsh in ue5-main branch]
2023-05-22 15:37:51 -04:00
Ben Marsh
993bb47657 Horde: Accept duration of tool deployment in minutes, rather than parsing a timestamp value.
#preflight none

[CL 25568435 by Ben Marsh in ue5-main branch]
2023-05-22 14:58:54 -04:00
Ben Marsh
aaebad6863 Horde: Allow uploading tools through multiple blob writes.
#preflight none

[CL 25567601 by Ben Marsh in ue5-main branch]
2023-05-22 14:08:03 -04:00
Ben Marsh
f779f2f24c Horde: Use a struct that wraps a string to represent ACL actions, rather than an enum. This allows more flexibility and extensibility in where ACL actions can be defined.
#preflight none
#fyi Joakim.Lindqvist

[CL 25086472 by Ben Marsh in ue5-main branch]
2023-04-18 10:53:15 -04:00
Ben Marsh
4e9dc1d512 Horde: Allow downloading tools as single files if there are no other files or directories in them.
#preflight none

[CL 25047688 by Ben Marsh in ue5-main branch]
2023-04-14 15:27:08 -04:00
Ben Marsh
637187c618 Horde: Rename the Horde.Build project to Horde.Server.
#preflight none

[CL 24688228 by Ben Marsh in ue5-main branch]
2023-03-17 09:50:40 -04:00