Commit Graph

68 Commits

Author SHA1 Message Date
Ben Marsh
3f355c04d5 UAT: Revert changes to PDB generation on ARM64 until CI errors can be fixed.
#preflight none

[CL 23179836 by Ben Marsh in ue5-main branch]
2022-11-17 13:42:19 -05:00
Ben Marsh
39cea381f3 UAT: Disable PDB generation on win-arm64. This is a known issue in NET 6 (https://github.com/dotnet/roslyn/issues/59421).
#preflight none

[CL 23179342 by Ben Marsh in ue5-main branch]
2022-11-17 13:07:09 -05:00
Ben Marsh
39c3634a64 EpicGames.Serialization: Fix static analysis warnings.
#preflight none

[CL 22315522 by Ben Marsh in ue5-main branch]
2022-10-03 17:36:19 -04:00
Ben Marsh
523e314999 Upgrade shared C# projects to NET 6.
#preflight 63373455a852bd922c5364c5

[CL 22301764 by Ben Marsh in ue5-main branch]
2022-10-03 09:44:33 -04:00
Ben Marsh
e66c8c6a58 EpicGames.Serialization: Fix warnings compiling against NET 6 SDK.
#preflight none

[CL 22274746 by Ben Marsh in ue5-main branch]
2022-09-30 13:44:31 -04:00
Ben Marsh
d769555c4a Add Analyze configuration to EpicGames.Serialization.
#preflight none

[CL 21007076 by Ben Marsh in ue5-main branch]
2022-07-08 10:44:44 -04:00
Joakim Lindqvist
6c0afc1fcb CbPackage - Fixed up some warnings in the C# CbPackage code, reducing access scope on things that should be private
Also fixed up inconsistent whitespace.

#jira UE-158872
#preflight https://horde.devtools.epicgames.com/job/62c80bc6f671e8d2fac950f7

[CL 21004958 by Joakim Lindqvist in ue5-main branch]
2022-07-08 07:04:41 -04:00
Ben Marsh
3259d15ff7 Fix missing XML documentation
#preflight none

[CL 20967443 by Ben Marsh in ue5-main branch]
2022-07-06 11:11:48 -04:00
Joakim Lindqvist
c8798de32a C# implementation of CompactBinaryPackage (cbpkg)
#rb carl.bystrom
#preflight none

[CL 20964277 by Joakim Lindqvist in ue5-main branch]
2022-07-06 06:02:07 -04:00
Ben Marsh
cbd0f5ea19 Add a common interface for reading/writing to memory (IMemoryReader/IMemoryWriter), which is implemented by the legacy MemoryReader/MemoryWriter classes as well as the newer ByteArrayBuilder.
Also moves VarInt into EpicGames.Core.
#preflight 62bb5e3efd06251187efd3d7

[CL 20863839 by Ben Marsh in ue5-main branch]
2022-06-28 16:14:51 -04:00
Ben Marsh
ee74342948 Add extension methods to serialize VarInt values to ByteArrayBuilders.
#preflight none

[CL 20809848 by Ben Marsh in ue5-main branch]
2022-06-24 11:24:01 -04:00
Ben Marsh
fe2c895552 Add build steps for static analysis of UBT and UAT, and to test project file generation.
#preflight 62b37e6ad76167320e3a224d

[CL 20781813 by Ben Marsh in ue5-main branch]
2022-06-22 17:12:30 -04:00
Ben Marsh
27ff743762 Fix xmldoc warnings in EpicGames.Serialization.
#preflight none

[CL 20777344 by Ben Marsh in ue5-main branch]
2022-06-22 13:31:00 -04:00
Ben Marsh
a11561ae5f Support for serializing signed and unsigned VarInt types from C#.
#preflight 62b1f6898e03312ad86e0757

[CL 20760159 by Ben Marsh in ue5-main branch]
2022-06-21 13:00:33 -04:00
Ben Marsh
12a0d5010f EpicGames.Serialization: Support deserializing into getter-only collection properties.
#preflight none

[CL 20252879 by Ben Marsh in ue5-main branch]
2022-05-17 18:36:34 -04:00
Ben Marsh
7dae34d929 Horde: Missing file.
#preflight none

[CL 19637007 by Ben Marsh in ue5-main branch]
2022-04-05 20:25:41 -04:00
Ben Marsh
83041dec73 Horde: Add a subsystem for hosting tools on Horde.
- Each tool can have a number of deployments which are rolled out over time. Clients can specify a "phase" value indicating where in the queue they want to take updates (ie. whether they want to be early- or late-adopters), and deployments can be paused and cancelled.
- Tool channels are configured through the global configuration file. Tools can be marked "public", meaning that they do not require authentication against Horde for access. This can be useful for auto-update scenarios.
- The most recent 5 deployments are kept in the tool at any time.

The collection and controller implementation here is an experiment in reducing the amount of boilerplate currently adopted as a pattern in Horde. Notably:

- Model and collection classes are concrete rather than interfaces (since we don't generally mock them anyway).
- The same model class with annotations is used for response objects (paving the way to supporting patching and filtering using the same public model as the internal model).
- The VersionedCollection class is used to handle automatic migration of documents across schema versions, and cache document values with Redis.
- MongoDB property names are explicit and short, rather than just taking variable names.

#preflight none

[CL 19636699 by Ben Marsh in ue5-main branch]
2022-04-05 20:17:50 -04:00
Ben Marsh
b50740d5c1 Horde: Compact binary serialization improvements.
- Fix serialization of lists, directories and arrays that are set to null.
- Throw an exception when serializing a type that does not have any explicit compact binary field attributes. This is usually an error, caused by serializing a framework type with no matching converter, but can also occur when serializing an empty base class instance. To handle these situations, the class can be marked with [CbObject] to explicitly opt-in to being valid for serialization.

#fyi Joe.Kirchoff
#preflight none

[CL 19526671 by Ben Marsh in ue5-main branch]
2022-03-28 10:11:10 -04:00
Ben Marsh
508c144999 Horde: Last batch (hopefully) of static analysis fixes/suppressions.
#preflight 623e144c8073508cfc117a87

[CL 19517822 by Ben Marsh in ue5-main branch]
2022-03-25 15:35:47 -04:00
Ben Marsh
6b226011d7 Change EpicGames.Serialization library to match standard coding style.
#preflight none

[CL 19501703 by Ben Marsh in ue5-main branch]
2022-03-24 15:56:16 -04:00
Ben Marsh
17ddfdfdfc Horde: More improvements to Bundles.
- Now does all string manipulations in UTF8 rather than converting to and fro with data received from Perforce
- Added support for reading a stream out of a CbWriter object. This allows pushing data directly to Horde Storage from the piecemeal 1kb buffers it allocates without having to concatenate everything into a contiguous array first, removing some big allocations and data copying on the common path for serializing objects into Horde Storage.
- Refactored the way that BundleNodeRef objects work so they don't need to track the Bundle that owns them, so we can add some serialization/deserialization tests without having to set up as much framework code.

#preflight none

[CL 19345769 by Ben Marsh in ue5-main branch]
2022-03-10 19:56:01 -05:00
Joakim Lindqvist
0cf8a00ca9 Compact Binary Serialization C# - Added support for serializing uint and ulong
#preflight none

[CL 19171576 by Joakim Lindqvist in ue5-main branch]
2022-02-28 05:12:00 -05:00
Ben Marsh
1b3110c5ec Horde: Refactored system for creating bundles of tree objects.
- Tree can now be modified without having to have entire working set in memory.
- Multiple nodes can be compressed/decompressed together, and an optional IMemoryCache allows caching decompressed blocks.
- Added support for specifying custom compact-binary serializers on individual properties.
- Added test suite to test bundling functionality.
- Fixed issue where VarInts of negative values would not serialize correctly.
#preflight 621952f68849a7424fa36567

[CL 19158249 by Ben Marsh in ue5-main branch]
2022-02-25 17:11:58 -05:00
Joakim Lindqvist
6e85431bc6 EpicGames.Serialization - Added support for C# arrays (and not just lists) when serializing C# properties to compact binary
Also fixed issue were empty lists would not be serialized (field skipped)

#preflight none

[CL 19111704 by Joakim Lindqvist in ue5-main branch]
2022-02-24 05:44:28 -05:00
Joakim Lindqvist
b37024fe9b C# Compact Binary Serialization - Added more tests from Horde Storage (Jupiter Tests) and fixed issues exposed by them.
#preflight none

[CL 19111703 by Joakim Lindqvist in ue5-main branch]
2022-02-24 05:44:12 -05:00