1010using Microsoft . Azure . SignalR . Common ;
1111using Microsoft . Azure . SignalR . Protocol ;
1212
13+ #nullable enable
1314namespace Microsoft . Azure . SignalR ;
1415
1516internal class ServiceConnectionManager < THub > : IDisposable , IServiceConnectionManager < THub > where THub : Hub
1617{
17- private IServiceConnectionContainer _serviceConnection ;
18+ private IServiceConnectionContainer ? _serviceConnection ;
1819
1920 public void SetServiceConnection ( IServiceConnectionContainer serviceConnection )
2021 {
@@ -23,22 +24,22 @@ public void SetServiceConnection(IServiceConnectionContainer serviceConnection)
2324
2425 public Task StartAsync ( )
2526 {
26- return _serviceConnection . StartAsync ( ) ;
27+ return _serviceConnection ? . StartAsync ( ) ?? throw new InvalidOperationException ( ) ;
2728 }
2829
2930 public Task StopAsync ( )
3031 {
31- return _serviceConnection . StopAsync ( ) ;
32+ return _serviceConnection ? . StopAsync ( ) ?? Task . CompletedTask ;
3233 }
3334
34- public async Task OfflineAsync ( GracefulShutdownMode mode , CancellationToken token )
35+ public Task OfflineAsync ( GracefulShutdownMode mode , CancellationToken token )
3536 {
36- await _serviceConnection . OfflineAsync ( mode , token ) ;
37+ return _serviceConnection ? . OfflineAsync ( mode , token ) ?? Task . CompletedTask ;
3738 }
3839
39- public async Task CloseClientConnections ( CancellationToken cancellationToken )
40+ public Task CloseClientConnections ( CancellationToken cancellationToken )
4041 {
41- await _serviceConnection . CloseClientConnections ( cancellationToken ) ;
42+ return _serviceConnection ? . CloseClientConnections ( cancellationToken ) ?? Task . CompletedTask ;
4243 }
4344
4445 public Task WriteAsync ( ServiceMessage serviceMessage )
@@ -68,6 +69,11 @@ public void Dispose()
6869
6970 public IAsyncEnumerable < GroupMember > ListConnectionsInGroupAsync ( string groupName , int ? top = null , ulong ? tracingId = null , CancellationToken token = default )
7071 {
72+ if ( _serviceConnection == null )
73+ {
74+ throw new AzureSignalRNotConnectedException ( ) ;
75+ }
76+
7177 return _serviceConnection . ListConnectionsInGroupAsync ( groupName , top , tracingId , token ) ;
7278 }
7379}
0 commit comments