Commit Graph

52 Commits

Author SHA1 Message Date
Ben Marsh
3038a23a87 Horde: Allow AddHordeHttpClient overloads to modify the HttpClient used to construct HordeHttpClient.
[CL 27983969 by Ben Marsh in ue5-main branch]
2023-09-18 21:13:50 -04:00
Ben Marsh
2129156f7e Horde: Refactoring auth/connection management for Horde API.
* HTTP client instances used to communicate with the Horde server are now provided as typed clients from IHttpClientFactory.
* Logic for getting and refreshing an access token is done via a delegating HttpMessageHandler, which fetches a new token whenever an unauthenticated response is received from the server.
* Moved request/response definitions for /api/v1/server endpoint calls into EpicGames.Horde.

[CL 27980773 by Ben Marsh in ue5-main branch]
2023-09-18 19:24:22 -04:00
Ben Marsh
dd4febb550 Box: Include the worker id number in any log messages output from Horde. Also add a warning when the initiator has been waiting for an attach message for too long.
[CL 27919436 by Ben Marsh in ue5-main branch]
2023-09-15 12:22:30 -04:00
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
4ac8d339f5 Horde: More static analyzer fixes.
[CL 27857368 by Ben Marsh in ue5-main branch]
2023-09-13 18:45:06 -04:00
carl bystrom
c49e56864b Horde: Add optional request ID to compute allocation requests
[CL 27835739 by carl bystrom in ue5-main branch]
2023-09-13 12:26:03 -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
luc rosenzweig
143ba1dad9 Fixed small bugs in the Horde C++ code (for instance, int parsing, some message serialization).
#rb ben.marsh

[CL 27678172 by luc rosenzweig in ue5-main branch]
2023-09-07 13:34:00 -04:00
Ben Marsh
9374258397 Horde: Move C++ remote execution classes into the UE project.
[CL 27286844 by Ben Marsh in ue5-main branch]
2023-08-22 17:02:21 -04:00
Ben Marsh
b0183742a8 Horde: Add agent message enum and type definitions to C++ sample.
[CL 27280290 by Ben Marsh in ue5-main branch]
2023-08-22 14:27:05 -04:00
Ben Marsh
4d8cd83a73 Horde: Automatically insert the CLIENT/REMOTE prefix to log messages output by the local compute client, and have the agent channel output use the same logger.
[CL 27248101 by Ben Marsh in ue5-main branch]
2023-08-21 14:38:59 -04:00
carl bystrom
72f86897d5 Horde: Support running compute tasks under Wine on Linux
Compute tasks can request Wine to be used and agent can choose to respect that if conditions are right (running on Linux and the Wine executable path set).

#rb Ben.Marsh

[CL 27029748 by carl bystrom in ue5-main branch]
2023-08-11 11:25:26 -04:00
Ben Marsh
0db70692a8 Horde: Fix remote execution errors on Mac.
- Max length for semaphore name is 31 characters on MacOS.
- Also add some custom assert/verify macros, and include errno strings in errors.

[CL 26678594 by Ben Marsh in ue5-main branch]
2023-07-28 13:25:31 -04:00
Ben Marsh
705931a7ec Horde: Unifying C#/C++ implementations of remote execution code.
- Handle ref counting in the same way for each implementation.
- Writers now need to be created explicitly, and are marked complete when their last writer is released.
- Added -InProc command line argument to sample app, which runs C# assemblies in the same process when possible.

[CL 26675350 by Ben Marsh in ue5-main branch]
2023-07-28 11:51:34 -04:00
Ben Marsh
7f2bdd427d Horde: First pass at cross-platform support for worker remote execution lib.
[CL 26641283 by Ben Marsh in ue5-main branch]
2023-07-27 11:14:50 -04:00
Ben Marsh
f9e052f6bd Horde: Sync C# memory layout of compute buffer with the C++ version.
[CL 26609902 by Ben Marsh in ue5-main branch]
2023-07-26 12:07:12 -04:00
Ben Marsh
61e44b1cbe Horde: C++ Remote Execution improvements.
- Multiple readers can now be allocated from a single buffer dynamically. Readers are ref-counted separately to the underlying buffer, and are released once their ref count reaches zero.
- Detaching readers is now supported independently to marking the buffer as complete.

[CL 26556510 by Ben Marsh in ue5-main branch]
2023-07-24 17:25:42 -04:00
Ben Marsh
845ee4c2aa Horde: Add bitfields to C++ compute buffer states, to help with debugging.
[CL 26553240 by Ben Marsh in ue5-main branch]
2023-07-24 15:53:46 -04:00
Ben Marsh
092c097eef Horde: Add missing copyright notice.
[CL 26535784 by Ben Marsh in ue5-main branch]
2023-07-22 14:50:49 -04:00
Ben Marsh
1f60ee0824 Horde: Unifying C#/C++ implementations of remote execution API.
- Abstract out platform specific implementation details into ComputePlatform.cpp/h.
- Add an overridable transport implementation of ComputeSocket, similar to what is available in C#.
- Add some local tests for C++ implementation.
- Various refactoring to converge implementation details/names/etc...

[CL 26535754 by Ben Marsh in ue5-main branch]
2023-07-22 14:17:04 -04:00
Ben Marsh
52ecb3a14a Horde: Change IComputeSocket to a concrete base class.
[CL 26508737 by Ben Marsh in ue5-main branch]
2023-07-21 08:49:43 -04:00
Ben Marsh
9addb084a3 Horde: Change IComputeChannel to a concrete implementation.
[CL 26508557 by Ben Marsh in ue5-main branch]
2023-07-21 08:26:18 -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
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