10
10
using Microsoft . Azure . SignalR . Common ;
11
11
using Microsoft . Azure . SignalR . Protocol ;
12
12
13
+ #nullable enable
13
14
namespace Microsoft . Azure . SignalR ;
14
15
15
16
internal class ServiceConnectionManager < THub > : IDisposable , IServiceConnectionManager < THub > where THub : Hub
16
17
{
17
- private IServiceConnectionContainer _serviceConnection ;
18
+ private IServiceConnectionContainer ? _serviceConnection ;
18
19
19
20
public void SetServiceConnection ( IServiceConnectionContainer serviceConnection )
20
21
{
@@ -23,22 +24,22 @@ public void SetServiceConnection(IServiceConnectionContainer serviceConnection)
23
24
24
25
public Task StartAsync ( )
25
26
{
26
- return _serviceConnection . StartAsync ( ) ;
27
+ return _serviceConnection ? . StartAsync ( ) ?? throw new InvalidOperationException ( ) ;
27
28
}
28
29
29
30
public Task StopAsync ( )
30
31
{
31
- return _serviceConnection . StopAsync ( ) ;
32
+ return _serviceConnection ? . StopAsync ( ) ?? Task . CompletedTask ;
32
33
}
33
34
34
- public async Task OfflineAsync ( GracefulShutdownMode mode , CancellationToken token )
35
+ public Task OfflineAsync ( GracefulShutdownMode mode , CancellationToken token )
35
36
{
36
- await _serviceConnection . OfflineAsync ( mode , token ) ;
37
+ return _serviceConnection ? . OfflineAsync ( mode , token ) ?? Task . CompletedTask ;
37
38
}
38
39
39
- public async Task CloseClientConnections ( CancellationToken cancellationToken )
40
+ public Task CloseClientConnections ( CancellationToken cancellationToken )
40
41
{
41
- await _serviceConnection . CloseClientConnections ( cancellationToken ) ;
42
+ return _serviceConnection ? . CloseClientConnections ( cancellationToken ) ?? Task . CompletedTask ;
42
43
}
43
44
44
45
public Task WriteAsync ( ServiceMessage serviceMessage )
@@ -68,6 +69,11 @@ public void Dispose()
68
69
69
70
public IAsyncEnumerable < GroupMember > ListConnectionsInGroupAsync ( string groupName , int ? top = null , ulong ? tracingId = null , CancellationToken token = default )
70
71
{
72
+ if ( _serviceConnection == null )
73
+ {
74
+ throw new AzureSignalRNotConnectedException ( ) ;
75
+ }
76
+
71
77
return _serviceConnection . ListConnectionsInGroupAsync ( groupName , top , tracingId , token ) ;
72
78
}
73
79
}
0 commit comments