@@ -21,7 +21,7 @@ internal abstract class MessagePackHubProtocolWorker
21
21
private const int VoidResult = 2 ;
22
22
private const int NonVoidResult = 3 ;
23
23
24
- public bool TryParseMessage ( ref ReadOnlySequence < byte > input , IInvocationBinder binder , out HubMessage message )
24
+ public bool TryParseMessage ( ref ReadOnlySequence < byte > input , IInvocationBinder binder , out HubMessage ? message )
25
25
{
26
26
if ( ! BinaryMessageParser . TryParseMessage ( ref input , out var payload ) )
27
27
{
@@ -34,7 +34,7 @@ public bool TryParseMessage(ref ReadOnlySequence<byte> input, IInvocationBinder
34
34
return true ;
35
35
}
36
36
37
- private HubMessage ParseMessage ( ref MessagePackReader reader , IInvocationBinder binder )
37
+ private HubMessage ? ParseMessage ( ref MessagePackReader reader , IInvocationBinder binder )
38
38
{
39
39
var itemCount = reader . ReadArrayHeader ( ) ;
40
40
@@ -76,7 +76,7 @@ private HubMessage CreateInvocationMessage(ref MessagePackReader reader, IInvoca
76
76
77
77
var target = ReadString ( ref reader , "target" ) ;
78
78
79
- object [ ] arguments = null ;
79
+ object [ ] ? arguments ;
80
80
try
81
81
{
82
82
var parameterTypes = binder . GetParameterTypes ( target ) ;
@@ -87,7 +87,7 @@ private HubMessage CreateInvocationMessage(ref MessagePackReader reader, IInvoca
87
87
return new InvocationBindingFailureMessage ( invocationId , target , ExceptionDispatchInfo . Capture ( ex ) ) ;
88
88
}
89
89
90
- string [ ] streams = null ;
90
+ string [ ] ? streams = null ;
91
91
// Previous clients will send 5 items, so we check if they sent a stream array or not
92
92
if ( itemCount > 5 )
93
93
{
@@ -103,7 +103,7 @@ private HubMessage CreateStreamInvocationMessage(ref MessagePackReader reader, I
103
103
var invocationId = ReadInvocationId ( ref reader ) ;
104
104
var target = ReadString ( ref reader , "target" ) ;
105
105
106
- object [ ] arguments = null ;
106
+ object [ ] arguments ;
107
107
try
108
108
{
109
109
var parameterTypes = binder . GetParameterTypes ( target ) ;
@@ -114,7 +114,7 @@ private HubMessage CreateStreamInvocationMessage(ref MessagePackReader reader, I
114
114
return new InvocationBindingFailureMessage ( invocationId , target , ExceptionDispatchInfo . Capture ( ex ) ) ;
115
115
}
116
116
117
- string [ ] streams = null ;
117
+ string [ ] ? streams = null ;
118
118
// Previous clients will send 5 items, so we check if they sent a stream array or not
119
119
if ( itemCount > 5 )
120
120
{
@@ -148,8 +148,8 @@ private CompletionMessage CreateCompletionMessage(ref MessagePackReader reader,
148
148
var invocationId = ReadInvocationId ( ref reader ) ;
149
149
var resultKind = ReadInt32 ( ref reader , "resultKind" ) ;
150
150
151
- string error = null ;
152
- object result = null ;
151
+ string ? error = null ;
152
+ object ? result = null ;
153
153
var hasResult = false ;
154
154
155
155
switch ( resultKind )
@@ -198,7 +198,7 @@ private CloseMessage CreateCloseMessage(ref MessagePackReader reader, int itemCo
198
198
return new CloseMessage ( error , allowReconnect ) ;
199
199
}
200
200
201
- private Dictionary < string , string > ReadHeaders ( ref MessagePackReader reader )
201
+ private Dictionary < string , string > ? ReadHeaders ( ref MessagePackReader reader )
202
202
{
203
203
var headerCount = ReadMapLength ( ref reader , "headers" ) ;
204
204
if ( headerCount > 0 )
@@ -219,10 +219,10 @@ private Dictionary<string, string> ReadHeaders(ref MessagePackReader reader)
219
219
}
220
220
}
221
221
222
- private string [ ] ReadStreamIds ( ref MessagePackReader reader )
222
+ private string [ ] ? ReadStreamIds ( ref MessagePackReader reader )
223
223
{
224
224
var streamIdCount = ReadArrayLength ( ref reader , "streamIds" ) ;
225
- List < string > streams = null ;
225
+ List < string > ? streams = null ;
226
226
227
227
if ( streamIdCount > 0 )
228
228
{
@@ -264,7 +264,7 @@ private object[] BindArguments(ref MessagePackReader reader, IReadOnlyList<Type>
264
264
265
265
protected abstract object DeserializeObject ( ref MessagePackReader reader , Type type , string field ) ;
266
266
267
- private T ApplyHeaders < T > ( IDictionary < string , string > source , T destination ) where T : HubInvocationMessage
267
+ private T ApplyHeaders < T > ( IDictionary < string , string > ? source , T destination ) where T : HubInvocationMessage
268
268
{
269
269
if ( source != null && source . Count > 0 )
270
270
{
@@ -374,10 +374,18 @@ private void WriteInvocationMessage(InvocationMessage message, ref MessagePackWr
374
374
writer . Write ( message . InvocationId ) ;
375
375
}
376
376
writer . Write ( message . Target ) ;
377
- writer . WriteArrayHeader ( message . Arguments . Length ) ;
378
- foreach ( var arg in message . Arguments )
377
+
378
+ if ( message . Arguments is null )
379
379
{
380
- WriteArgument ( arg , ref writer ) ;
380
+ writer . WriteArrayHeader ( 0 ) ;
381
+ }
382
+ else
383
+ {
384
+ writer . WriteArrayHeader ( message . Arguments . Length ) ;
385
+ foreach ( var arg in message . Arguments )
386
+ {
387
+ WriteArgument ( arg , ref writer ) ;
388
+ }
381
389
}
382
390
383
391
WriteStreamIds ( message . StreamIds , ref writer ) ;
@@ -392,10 +400,17 @@ private void WriteStreamInvocationMessage(StreamInvocationMessage message, ref M
392
400
writer . Write ( message . InvocationId ) ;
393
401
writer . Write ( message . Target ) ;
394
402
395
- writer . WriteArrayHeader ( message . Arguments . Length ) ;
396
- foreach ( var arg in message . Arguments )
403
+ if ( message . Arguments is null )
397
404
{
398
- WriteArgument ( arg , ref writer ) ;
405
+ writer . WriteArrayHeader ( 0 ) ;
406
+ }
407
+ else
408
+ {
409
+ writer . WriteArrayHeader ( message . Arguments . Length ) ;
410
+ foreach ( var arg in message . Arguments )
411
+ {
412
+ WriteArgument ( arg , ref writer ) ;
413
+ }
399
414
}
400
415
401
416
WriteStreamIds ( message . StreamIds , ref writer ) ;
@@ -410,7 +425,7 @@ private void WriteStreamingItemMessage(StreamItemMessage message, ref MessagePac
410
425
WriteArgument ( message . Item , ref writer ) ;
411
426
}
412
427
413
- private void WriteArgument ( object argument , ref MessagePackWriter writer )
428
+ private void WriteArgument ( object ? argument , ref MessagePackWriter writer )
414
429
{
415
430
if ( argument == null )
416
431
{
@@ -424,7 +439,7 @@ private void WriteArgument(object argument, ref MessagePackWriter writer)
424
439
425
440
protected abstract void Serialize ( ref MessagePackWriter writer , Type type , object value ) ;
426
441
427
- private void WriteStreamIds ( string [ ] streamIds , ref MessagePackWriter writer )
442
+ private void WriteStreamIds ( string [ ] ? streamIds , ref MessagePackWriter writer )
428
443
{
429
444
if ( streamIds != null )
430
445
{
@@ -493,7 +508,7 @@ private void WritePingMessage(PingMessage pingMessage, ref MessagePackWriter wri
493
508
writer . Write ( HubProtocolConstants . PingMessageType ) ;
494
509
}
495
510
496
- private void PackHeaders ( IDictionary < string , string > headers , ref MessagePackWriter writer )
511
+ private void PackHeaders ( IDictionary < string , string > ? headers , ref MessagePackWriter writer )
497
512
{
498
513
if ( headers != null )
499
514
{
0 commit comments