THRIFT-5591 Add uuid type to IDL and implement reference code (+ improved self-tests)
Client: compiler general, netstd, Delphi
Patch: Jens Geyer
diff --git a/lib/netstd/Thrift/Protocol/TJSONProtocol.cs b/lib/netstd/Thrift/Protocol/TJSONProtocol.cs
index 8799026..c100d86 100644
--- a/lib/netstd/Thrift/Protocol/TJSONProtocol.cs
+++ b/lib/netstd/Thrift/Protocol/TJSONProtocol.cs
@@ -401,6 +401,10 @@
{
await WriteJsonBase64Async(bytes, cancellationToken);
}
+ public override async Task WriteUuidAsync(Guid uuid, CancellationToken cancellationToken = default)
+ {
+ await WriteStringAsync(uuid.ToString("D"), cancellationToken); // no curly braces
+ }
/// <summary>
/// Read in a JSON string, unescaping as appropriate.. Skip Reading from the
@@ -817,6 +821,11 @@
return await ReadJsonBase64Async(cancellationToken);
}
+ public override async ValueTask<Guid> ReadUuidAsync(CancellationToken cancellationToken = default)
+ {
+ return new Guid( await ReadStringAsync(cancellationToken));
+ }
+
// Return the minimum number of bytes a type will consume on the wire
public override int GetMinSerializedSize(TType type)
{
@@ -835,6 +844,7 @@
case TType.Map: return 2; // empty map
case TType.Set: return 2; // empty set
case TType.List: return 2; // empty list
+ case TType.Uuid: return 36; // "E236974D-F0B0-4E05-8F29-0B455D41B1A1"
default: throw new TProtocolException(TProtocolException.NOT_IMPLEMENTED, "unrecognized type code");
}
}