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