1010
1111namespace RabbitMQ . Stream . Client . Reliable ;
1212
13+ public class ReconnectingArgs : EventArgs
14+ {
15+ public ReconnectingArgs ( bool isReconnecting )
16+ {
17+ IsReconnecting = isReconnecting ;
18+ }
19+
20+ public bool IsReconnecting { get ; }
21+ }
22+
1323public record ReliableConfig
1424{
1525 public IReconnectStrategy ReconnectStrategy { get ; set ; }
1626 public StreamSystem StreamSystem { get ; }
1727 public string Stream { get ; }
1828
29+
30+ public delegate void ReconnectingEventHandler ( object sender , ReconnectingArgs e ) ;
31+
32+ public event ReconnectingEventHandler Reconnecting ;
33+
34+ internal virtual void OnReconnecting ( ReconnectingArgs e )
35+ {
36+ Reconnecting ? . Invoke ( this , e ) ;
37+ }
38+
1939 protected ReliableConfig ( StreamSystem streamSystem , string stream )
2040 {
2141 if ( string . IsNullOrWhiteSpace ( stream ) )
@@ -41,6 +61,15 @@ public abstract class ReliableBase
4161 protected bool _isOpen ;
4262 protected bool _inReconnection ;
4363
64+ internal delegate void ReconnectingEventHandler ( object sender , ReconnectingArgs e ) ;
65+
66+ internal event ReconnectingEventHandler Reconnecting ;
67+
68+ protected virtual void OnReconnecting ( ReconnectingArgs e )
69+ {
70+ Reconnecting ? . Invoke ( this , e ) ;
71+ }
72+
4473 protected abstract ILogger BaseLogger { get ; }
4574
4675 internal async Task Init ( IReconnectStrategy reconnectStrategy )
@@ -105,6 +134,7 @@ private async Task Init(bool boot, IReconnectStrategy reconnectStrategy)
105134 protected async Task TryToReconnect ( IReconnectStrategy reconnectStrategy )
106135 {
107136 _inReconnection = true ;
137+ OnReconnecting ( new ReconnectingArgs ( true ) ) ;
108138 try
109139 {
110140 switch ( await reconnectStrategy . WhenDisconnected ( ToString ( ) ) . ConfigureAwait ( false ) && _isOpen )
@@ -122,6 +152,7 @@ protected async Task TryToReconnect(IReconnectStrategy reconnectStrategy)
122152 finally
123153 {
124154 _inReconnection = false ;
155+ OnReconnecting ( new ReconnectingArgs ( false ) ) ;
125156 }
126157 }
127158
@@ -143,7 +174,8 @@ internal async Task HandleMetaDataMaybeReconnect(string stream, StreamSystem sys
143174 await Task . Delay ( 500 ) . ConfigureAwait ( false ) ;
144175 if ( await system . StreamExists ( stream ) . ConfigureAwait ( false ) )
145176 {
146- BaseLogger . LogInformation ( "Meta data update stream: {StreamIdentifier}. The stream still exists. Client: {Identity}" ,
177+ BaseLogger . LogInformation (
178+ "Meta data update stream: {StreamIdentifier}. The stream still exists. Client: {Identity}" ,
147179 stream ,
148180 ToString ( )
149181 ) ;
0 commit comments