Commit Graph

16 Commits

Author SHA1 Message Date
ben marsh
ebcb0ef6b3 Horde: Add a framework for being able to expand CB serialization with custom converters.
CbSerializer.RegisterConverterFactory() allows registering factories that can create custom CbConverter instances for different types.

Move tagged-property IL generation into its own converter factory (CbDefaultConverterFactory). Add custom converters for list and dictionary types.

#ROBOMERGE-SOURCE: CL 17008251 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 17008389 by ben marsh in ue5-release-engine-test branch]
2021-07-30 15:50:23 -04:00
ben marsh
893277ddd0 Horde: Add support for reading and writing list types to compact binary.
#ROBOMERGE-SOURCE: CL 17000074 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 17000080 by ben marsh in ue5-release-engine-test branch]
2021-07-29 15:36:45 -04:00
ben marsh
782894c48f Horde: Add IL generated serializer for reading objects. Optimized for fields ordered the same as the current class layout. Only currently supports some basic types (int, string, other objects).
#ROBOMERGE-SOURCE: CL 16997462 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16997472 by ben marsh in ue5-release-engine-test branch]
2021-07-29 13:09:39 -04:00
ben marsh
1f3c60c37e Horde: Generate dynamic methods for serializing compact binary objects.
#ROBOMERGE-SOURCE: CL 16994864 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16994870 by ben marsh in ue5-release-engine-test branch]
2021-07-29 09:21:21 -04:00
ben marsh
57d8091b79 Horde: Add a simple, attribute-based serializer for compact binary objects.
#ROBOMERGE-SOURCE: CL 16983777 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16983794 by ben marsh in ue5-release-engine-test branch]
2021-07-28 12:41:33 -04:00
joe kirchoff
7398b01588 [Backout] - CL16961198
[FYI] Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
Use Microsoft.CodeAnalysis.CSharp.Workspaces for code analysis

#rb none
#rnx

#ROBOMERGE-SOURCE: CL 16961691 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16961693 by joe kirchoff in ue5-release-engine-test branch]
2021-07-26 17:59:19 -04:00
joe kirchoff
2e1a78fb8b Use Microsoft.CodeAnalysis.CSharp.Workspaces for code analysis
#rb none
#rnx

#ROBOMERGE-SOURCE: CL 16961198 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16961204 by joe kirchoff in ue5-release-engine-test branch]
2021-07-26 17:15:01 -04:00
ben marsh
29eda8de01 Horde: Fix memory leak of Blake3.Hasher objects.
#ROBOMERGE-SOURCE: CL 16960469 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16960535 by ben marsh in ue5-release-engine-test branch]
2021-07-26 16:05:45 -04:00
ben marsh
bb65d26dbc Horde: Fix superfluous length field being written out with object data.
#ROBOMERGE-SOURCE: CL 16888502 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16888522 by ben marsh in ue5-release-engine-test branch]
2021-07-19 16:33:10 -04:00
ben marsh
491fca0c7c Fix AsBinary() returning the incorrect payload buffer for binary fields. Was causing Horde agents to deserialize incorrect hash values.
#ROBOMERGE-SOURCE: CL 16852536 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16852540 by ben marsh in ue5-release-engine-test branch]
2021-07-14 13:55:40 -04:00
ben marsh
334d38e86c Horde: Write managed workspace snapshots using Compact Binary.
#ROBOMERGE-SOURCE: CL 16811525 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16811533 by ben marsh in ue5-release-engine-test branch]
2021-07-06 11:05:18 -04:00
ben marsh
5feac1c075 Rename ReadOnlyUtf8String to Utf8String. Strings are always immutable in C#.
#ROBOMERGE-SOURCE: CL 16807051 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16807055 by ben marsh in ue5-release-engine-test branch]
2021-07-02 12:17:42 -04:00
ben marsh
7bf7a6596b Fix buffer overrun in compact binary writer.
#ROBOMERGE-SOURCE: CL 16807025 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16807029 by ben marsh in ue5-release-engine-test branch]
2021-07-02 12:12:09 -04:00
ben marsh
2c41930599 Horde: Various compact binary library improvements.
CbObject/CbBinary/CbArray:
* Added proxy classes for viewing objects in the debugger. CbArray now displays as an array, CbObject displays as an array of fields, etc...
* Removed overloaded "View" methods, which are not required in C# due to GC.

CbWriter:
* Significantly fewer memory allocations/copying. Output buffer is now allocated in large chunks, with length fields only inserted when copying to the final output buffer.
* Methods for writing named/unnamed fields are now more idomatic with other C# serialization classes (ie. WriteXXX(Name, Value) and WriteXXXValue(Value)).

Other:
* Added serialization tests to Horde projects and fixed NuGet dependencies.

#ROBOMERGE-SOURCE: CL 16804192 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16804202 by ben marsh in ue5-release-engine-test branch]
2021-07-01 09:16:47 -04:00
ben marsh
67d5b5cfb7 Horde: Basic implementation of storage API.
Current limitations:

* Only supports a filesystem backend
* No garbage collection
* Refs are stored in the database, and do not automatically expire.
* Validation of refs is slow and does not cache any data.

#ROBOMERGE-SOURCE: CL 16778495 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16778515 by ben marsh in ue5-release-engine-test branch]
2021-06-24 16:58:05 -04:00
ben marsh
d1160cef8d Add C# compact binary library. Includes almost all functionality from C++ library, and test suite.
#ROBOMERGE-SOURCE: CL 16703410 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16703422 by ben marsh in ue5-release-engine-test branch]
2021-06-17 08:23:04 -04:00