Skip to content

Commit 7d67496

Browse files
Add Model to ConsumerEventArgs and BasicDeliverEventArgs, both very closely related to EventingBasicConsumer
1 parent af228f2 commit 7d67496

File tree

5 files changed

+34
-7
lines changed

5 files changed

+34
-7
lines changed

projects/client/RabbitMQ.Client/src/client/api/DefaultBasicConsumer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ namespace RabbitMQ.Client
5858
///</remarks>
5959
public class DefaultBasicConsumer : IBasicConsumer
6060
{
61-
private IModel m_model = null;
61+
protected IModel m_model = null;
6262
private string m_consumerTag = null;
6363
private bool m_running = false;
6464
private ShutdownEventArgs m_shutdownReason = null;
@@ -126,7 +126,7 @@ public virtual void OnCancel()
126126
{
127127
foreach (ConsumerCancelledEventHandler h in handler.GetInvocationList())
128128
{
129-
h(this, new ConsumerEventArgs(m_consumerTag));
129+
h(this, new ConsumerEventArgs(m_model, m_consumerTag));
130130
}
131131
}
132132
}

projects/client/RabbitMQ.Client/src/client/events/BasicDeliverEventArgs.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ namespace RabbitMQ.Client.Events
4646
///from an AMQP broker within the Basic content-class.</summary>
4747
public class BasicDeliverEventArgs : EventArgs
4848
{
49+
private IModel m_model;
4950
private string m_consumerTag;
5051
private ulong m_deliveryTag;
5152
private bool m_redelivered;
@@ -59,14 +60,16 @@ public BasicDeliverEventArgs() { }
5960

6061
///<summary>Constructor that fills the event's properties from
6162
///its arguments.</summary>
62-
public BasicDeliverEventArgs(string consumerTag,
63+
public BasicDeliverEventArgs(IModel model,
64+
string consumerTag,
6365
ulong deliveryTag,
6466
bool redelivered,
6567
string exchange,
6668
string routingKey,
6769
IBasicProperties properties,
6870
byte[] body)
6971
{
72+
m_model = model;
7073
m_consumerTag = consumerTag;
7174
m_deliveryTag = deliveryTag;
7275
m_redelivered = redelivered;
@@ -76,6 +79,14 @@ public BasicDeliverEventArgs(string consumerTag,
7679
m_body = body;
7780
}
7881

82+
///<summary>The model of the consumer that the message
83+
///was delivered to.</summary>
84+
public IModel Model
85+
{
86+
get { return m_model; }
87+
set { m_model = value; }
88+
}
89+
7990
///<summary>The consumer tag of the consumer that the message
8091
///was delivered to.</summary>
8192
public string ConsumerTag

projects/client/RabbitMQ.Client/src/client/events/ConsumerEventArgs.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,20 @@ namespace RabbitMQ.Client.Events
4747
public class ConsumerEventArgs: EventArgs
4848
{
4949
private readonly string m_consumerTag;
50+
private readonly IModel m_model;
5051

5152
///<summary>Construct an event containing the consumer-tag of
5253
///the consumer the event relates to.</summary>
53-
public ConsumerEventArgs(string consumerTag)
54+
public ConsumerEventArgs(IModel model, string consumerTag)
5455
{
56+
m_model = model;
5557
m_consumerTag = consumerTag;
5658
}
5759

60+
///<summary>Access the model of the consumer the event
61+
///relates to.</summary>
62+
public IModel Model { get { return m_model; } }
63+
5864
///<summary>Access the consumer-tag of the consumer the event
5965
///relates to.</summary>
6066
public string ConsumerTag { get { return m_consumerTag; } }

projects/client/RabbitMQ.Client/src/client/events/EventingBasicConsumer.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public override void HandleBasicCancelOk(string consumerTag)
6262
base.HandleBasicCancelOk(consumerTag);
6363

6464
if (Unregistered != null) {
65-
Unregistered(this, new ConsumerEventArgs(consumerTag));
65+
Unregistered(this, new ConsumerEventArgs(m_model, consumerTag));
6666
}
6767
}
6868

@@ -72,7 +72,7 @@ public override void HandleBasicConsumeOk(string consumerTag)
7272
base.HandleBasicConsumeOk(consumerTag);
7373

7474
if (Registered != null) {
75-
Registered(this, new ConsumerEventArgs(consumerTag));
75+
Registered(this, new ConsumerEventArgs(m_model, consumerTag));
7676
}
7777
}
7878

@@ -93,7 +93,8 @@ public override void HandleBasicDeliver(string consumerTag,
9393
properties,
9494
body);
9595
if (Received != null) {
96-
Received(this, new BasicDeliverEventArgs(consumerTag,
96+
Received(this, new BasicDeliverEventArgs(m_model,
97+
consumerTag,
9798
deliveryTag,
9899
redelivered,
99100
exchange,

projects/client/Unit/src/unit/TestEventingConsumer.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,32 +60,38 @@ public void TestEventingConsumerRegistrationEvents()
6060

6161
bool registeredInvoked = false;
6262
object registeredSender = null;
63+
ConsumerEventArgs registeredArgs = null;
6364
bool unregisteredInvoked = false;
6465
object unregisteredSender = null;
66+
ConsumerEventArgs unregisteredArgs = null;
6567

6668
EventingBasicConsumer ec = new EventingBasicConsumer(Model);
6769
ec.Registered += (s, args) =>
6870
{
6971
registeredInvoked = true;
7072
registeredSender = s;
73+
registeredArgs = args;
7174
};
7275

7376
ec.Unregistered += (s, args) =>
7477
{
7578
unregisteredInvoked = true;
7679
unregisteredSender = s;
80+
unregisteredArgs = args;
7781
};
7882

7983
string tag = Model.BasicConsume(q, false, ec);
8084

8185
Assert.IsTrue(registeredInvoked);
8286
Assert.IsNotNull(registeredSender);
8387
Assert.AreEqual(ec, registeredSender);
88+
Assert.AreEqual(Model, registeredArgs.Model);
8489

8590
Model.BasicCancel(tag);
8691
Assert.IsTrue(unregisteredInvoked);
8792
Assert.IsNotNull(unregisteredSender);
8893
Assert.AreEqual(ec, unregisteredSender);
94+
Assert.AreEqual(Model, unregisteredArgs.Model);
8995
}
9096

9197
[Test]
@@ -96,12 +102,14 @@ public void TestEventingConsumerDeliveryEvents()
96102

97103
bool receivedInvoked = false;
98104
object receivedSender = null;
105+
BasicDeliverEventArgs receivedArgs = null;
99106

100107
EventingBasicConsumer ec = new EventingBasicConsumer(Model);
101108
ec.Received += (s, args) =>
102109
{
103110
receivedInvoked = true;
104111
receivedSender = s;
112+
receivedArgs = args;
105113

106114
Monitor.PulseAll(o);
107115
};
@@ -113,6 +121,7 @@ public void TestEventingConsumerDeliveryEvents()
113121
Assert.IsTrue(receivedInvoked);
114122
Assert.IsNotNull(receivedSender);
115123
Assert.AreEqual(ec, receivedSender);
124+
Assert.AreEqual(Model, receivedArgs.Model);
116125

117126
bool shutdownInvoked = false;
118127
object shutdownSender = null;

0 commit comments

Comments
 (0)