Skip to content

Commit 88001ce

Browse files
Merge pull request #943 from rabbitmq/mk-recovery-events-in-iconnection
Breaking public API change: fold IAutorecoveringConnection [back] into IConnection
2 parents 52979d9 + 22133d2 commit 88001ce

File tree

5 files changed

+71
-62
lines changed

5 files changed

+71
-62
lines changed

projects/RabbitMQ.Client/client/api/IAutorecoveringConnection.cs

Lines changed: 0 additions & 53 deletions
This file was deleted.

projects/RabbitMQ.Client/client/api/IConnection.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,43 @@ public interface IConnection : INetworkConnection, IDisposable
166166
/// </remarks>
167167
event EventHandler<ShutdownEventArgs> ConnectionShutdown;
168168

169+
/// <summary>
170+
/// Raised when the connection completes recovery.
171+
/// </summary>
172+
/// <remarks>
173+
/// This event will never fire for connections that disable automatic recovery.
174+
/// </remarks>
175+
event EventHandler<EventArgs> RecoverySucceeded;
176+
177+
/// <summary>
178+
/// Raised when the connection recovery fails, e.g. because reconnection or topology
179+
/// recovery failed.
180+
/// </summary>
181+
/// <remarks>
182+
/// This event will never fire for connections that disable automatic recovery.
183+
/// </remarks>
184+
event EventHandler<ConnectionRecoveryErrorEventArgs> ConnectionRecoveryError;
185+
186+
/// <summary>
187+
/// Raised when the server-generated tag of a consumer registered on this connection changes during
188+
/// connection recovery. This allows applications that need to be aware of server-generated
189+
/// consumer tag values to keep track of the changes.
190+
/// </summary>
191+
/// <remarks>
192+
/// This event will never fire for connections that disable automatic recovery.
193+
/// </remarks>
194+
event EventHandler<ConsumerTagChangedAfterRecoveryEventArgs> ConsumerTagChangeAfterRecovery;
195+
196+
/// <summary>
197+
/// Raised when the name of a server-named queue declared on this connection changes during
198+
/// connection recovery. This allows applications that need to be aware of server-named
199+
/// queue names to keep track of the changes.
200+
/// </summary>
201+
/// <remarks>
202+
/// This event will never fire for connections that disable automatic recovery.
203+
/// </remarks>
204+
event EventHandler<QueueNameChangedAfterRecoveryEventArgs> QueueNameChangeAfterRecovery;
205+
169206
event EventHandler<EventArgs> ConnectionUnblocked;
170207

171208
/// <summary>

projects/RabbitMQ.Client/client/impl/AutorecoveringConnection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
namespace RabbitMQ.Client.Framing.Impl
4646
{
47-
internal sealed class AutorecoveringConnection : IAutorecoveringConnection
47+
internal sealed class AutorecoveringConnection : IConnection
4848
{
4949
private bool _disposed = false;
5050
private readonly object _eventLock = new object();

projects/RabbitMQ.Client/client/impl/Connection.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ public Connection(IConnectionFactory factory, bool insist, IFrameHandler frameHa
119119
public event EventHandler<CallbackExceptionEventArgs> CallbackException;
120120

121121
public event EventHandler<ConnectionBlockedEventArgs> ConnectionBlocked;
122+
public event EventHandler<EventArgs> ConnectionUnblocked;
122123

123124
public event EventHandler<ShutdownEventArgs> ConnectionShutdown
124125
{
@@ -149,10 +150,37 @@ public event EventHandler<ShutdownEventArgs> ConnectionShutdown
149150
}
150151
}
151152

153+
/// <summary>
154+
/// This event is never fired by non-recovering connections but it is a part of the <see cref="IConnection"/> interface.
155+
/// </summary>
156+
public event EventHandler<EventArgs> RecoverySucceeded {
157+
add { }
158+
remove { }
159+
}
152160

161+
/// <summary>
162+
/// This event is never fired by non-recovering connections but it is a part of the <see cref="IConnection"/> interface.
163+
/// </summary>
164+
public event EventHandler<ConnectionRecoveryErrorEventArgs> ConnectionRecoveryError {
165+
add { }
166+
remove { }
167+
}
153168

154-
public event EventHandler<EventArgs> ConnectionUnblocked;
169+
/// <summary>
170+
/// This event is never fired by non-recovering connections but it is a part of the <see cref="IConnection"/> interface.
171+
/// </summary>
172+
public event EventHandler<ConsumerTagChangedAfterRecoveryEventArgs> ConsumerTagChangeAfterRecovery {
173+
add { }
174+
remove { }
175+
}
155176

177+
/// <summary>
178+
/// This event is never fired by non-recovering connections but it is a part of the <see cref="IConnection"/> interface.
179+
/// </summary>
180+
public event EventHandler<QueueNameChangedAfterRecoveryEventArgs> QueueNameChangeAfterRecovery {
181+
add { }
182+
remove { }
183+
}
156184

157185
public string ClientProvidedName { get; }
158186

projects/Unit/APIApproval.Approve.verified.txt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,6 @@ namespace RabbitMQ.Client
231231
string Name { get; }
232232
RabbitMQ.Client.IAuthMechanism GetInstance();
233233
}
234-
public interface IAutorecoveringConnection : RabbitMQ.Client.IConnection, RabbitMQ.Client.INetworkConnection, System.IDisposable
235-
{
236-
event System.EventHandler<RabbitMQ.Client.Events.ConnectionRecoveryErrorEventArgs> ConnectionRecoveryError;
237-
event System.EventHandler<RabbitMQ.Client.Events.ConsumerTagChangedAfterRecoveryEventArgs> ConsumerTagChangeAfterRecovery;
238-
event System.EventHandler<RabbitMQ.Client.Events.QueueNameChangedAfterRecoveryEventArgs> QueueNameChangeAfterRecovery;
239-
event System.EventHandler<System.EventArgs> RecoverySucceeded;
240-
}
241234
public interface IBasicConsumer
242235
{
243236
RabbitMQ.Client.IModel Model { get; }
@@ -316,8 +309,12 @@ namespace RabbitMQ.Client
316309
System.Collections.Generic.IList<RabbitMQ.Client.ShutdownReportEntry> ShutdownReport { get; }
317310
event System.EventHandler<RabbitMQ.Client.Events.CallbackExceptionEventArgs> CallbackException;
318311
event System.EventHandler<RabbitMQ.Client.Events.ConnectionBlockedEventArgs> ConnectionBlocked;
312+
event System.EventHandler<RabbitMQ.Client.Events.ConnectionRecoveryErrorEventArgs> ConnectionRecoveryError;
319313
event System.EventHandler<RabbitMQ.Client.ShutdownEventArgs> ConnectionShutdown;
320314
event System.EventHandler<System.EventArgs> ConnectionUnblocked;
315+
event System.EventHandler<RabbitMQ.Client.Events.ConsumerTagChangedAfterRecoveryEventArgs> ConsumerTagChangeAfterRecovery;
316+
event System.EventHandler<RabbitMQ.Client.Events.QueueNameChangedAfterRecoveryEventArgs> QueueNameChangeAfterRecovery;
317+
event System.EventHandler<System.EventArgs> RecoverySucceeded;
321318
void Abort();
322319
void Abort(System.TimeSpan timeout);
323320
void Abort(ushort reasonCode, string reasonText);

0 commit comments

Comments
 (0)