|
10 | 10 |
|
11 | 11 | namespace HotChocolate.Types.Relay;
|
12 | 12 |
|
13 |
| -internal sealed class DefaultNodeIdSerializer(INodeIdValueSerializer[] serializers, int maxIdLength) : INodeIdSerializer |
| 13 | +internal sealed class DefaultNodeIdSerializer(INodeIdValueSerializer[]? serializers = null, int maxIdLength = 1024) |
| 14 | + : INodeIdSerializer |
14 | 15 | {
|
15 | 16 | private const byte _delimiter = (byte)':';
|
16 | 17 | private const byte _legacyDelimiter = (byte)'\n';
|
17 | 18 | private const int _stackallocThreshold = 256;
|
18 | 19 | private static readonly Encoding _utf8 = Encoding.UTF8;
|
19 | 20 | private readonly ConcurrentDictionary<string, byte[]> _names = new();
|
| 21 | + private readonly INodeIdValueSerializer[] _serializers = serializers ?? |
| 22 | + [ |
| 23 | + new StringNodeIdValueSerializer(), |
| 24 | + new Int16NodeIdValueSerializer(), |
| 25 | + new Int32NodeIdValueSerializer(), |
| 26 | + new Int64NodeIdValueSerializer(), |
| 27 | + new GuidNodeIdValueSerializer() |
| 28 | + ]; |
20 | 29 |
|
21 | 30 | public string Format(string typeName, object internalId)
|
22 | 31 | {
|
@@ -227,8 +236,8 @@ public NodeId Parse(string formattedId, Type runtimeType)
|
227 | 236 |
|
228 | 237 | private INodeIdValueSerializer? TryResolveSerializer(Type type)
|
229 | 238 | {
|
230 |
| - ref var serializer = ref MemoryMarshal.GetReference(serializers.AsSpan()); |
231 |
| - ref var end = ref Unsafe.Add(ref serializer, serializers.Length); |
| 239 | + ref var serializer = ref MemoryMarshal.GetReference(_serializers.AsSpan()); |
| 240 | + ref var end = ref Unsafe.Add(ref serializer, _serializers.Length); |
232 | 241 |
|
233 | 242 | while (Unsafe.IsAddressLessThan(ref serializer, ref end))
|
234 | 243 | {
|
|
0 commit comments