Skip to content

Commit 0b0c882

Browse files
committed
* Add dedicated Create static methods for WorkStruct
1 parent 6243282 commit 0b0c882

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

projects/RabbitMQ.Client/client/impl/ConsumerDispatching/ConsumerDispatcherChannelBase.cs

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ public ValueTask HandleBasicConsumeOkAsync(IBasicConsumer consumer, string consu
6464
if (false == _disposed && false == _quiesce)
6565
{
6666
AddConsumer(consumer, consumerTag);
67-
return _writer.WriteAsync(new WorkStruct(WorkType.ConsumeOk, consumer, consumerTag), cancellationToken);
67+
WorkStruct work = WorkStruct.CreateConsumeOk(consumer, consumerTag);
68+
return _writer.WriteAsync(work, cancellationToken);
6869
}
6970
else
7071
{
@@ -78,7 +79,8 @@ public ValueTask HandleBasicDeliverAsync(string consumerTag, ulong deliveryTag,
7879
{
7980
if (false == _disposed && false == _quiesce)
8081
{
81-
var work = new WorkStruct(GetConsumerOrDefault(consumerTag), consumerTag, deliveryTag, redelivered, exchange, routingKey, basicProperties, body);
82+
IBasicConsumer consumer = GetConsumerOrDefault(consumerTag);
83+
var work = WorkStruct.CreateDeliver(consumer, consumerTag, deliveryTag, redelivered, exchange, routingKey, basicProperties, body);
8284
return _writer.WriteAsync(work, cancellationToken);
8385
}
8486
else
@@ -91,7 +93,9 @@ public ValueTask HandleBasicCancelOkAsync(string consumerTag, CancellationToken
9193
{
9294
if (false == _disposed && false == _quiesce)
9395
{
94-
return _writer.WriteAsync(new WorkStruct(WorkType.CancelOk, GetAndRemoveConsumer(consumerTag), consumerTag), cancellationToken);
96+
IBasicConsumer consumer = GetAndRemoveConsumer(consumerTag);
97+
WorkStruct work = WorkStruct.CreateCancelOk(consumer, consumerTag);
98+
return _writer.WriteAsync(work, cancellationToken);
9599
}
96100
else
97101
{
@@ -103,7 +107,9 @@ public ValueTask HandleBasicCancelAsync(string consumerTag, CancellationToken ca
103107
{
104108
if (false == _disposed && false == _quiesce)
105109
{
106-
return _writer.WriteAsync(new WorkStruct(WorkType.Cancel, GetAndRemoveConsumer(consumerTag), consumerTag), cancellationToken);
110+
IBasicConsumer consumer = GetAndRemoveConsumer(consumerTag);
111+
WorkStruct work = WorkStruct.CreateCancel(consumer, consumerTag);
112+
return _writer.WriteAsync(work, cancellationToken);
107113
}
108114
else
109115
{
@@ -226,7 +232,7 @@ await _worker
226232

227233
protected sealed override void ShutdownConsumer(IBasicConsumer consumer, ShutdownEventArgs reason)
228234
{
229-
_writer.TryWrite(new WorkStruct(consumer, reason));
235+
_writer.TryWrite(WorkStruct.CreateShutdown(consumer, reason));
230236
}
231237

232238
protected override void InternalShutdown()
@@ -258,23 +264,23 @@ protected override Task InternalShutdownAsync()
258264
public readonly ShutdownEventArgs? Reason;
259265
public readonly WorkType WorkType;
260266

261-
public WorkStruct(WorkType type, IBasicConsumer consumer, string consumerTag)
267+
private WorkStruct(WorkType type, IBasicConsumer consumer, string consumerTag)
262268
: this()
263269
{
264270
WorkType = type;
265271
Consumer = consumer;
266272
ConsumerTag = consumerTag;
267273
}
268274

269-
public WorkStruct(IBasicConsumer consumer, ShutdownEventArgs reason)
275+
private WorkStruct(IBasicConsumer consumer, ShutdownEventArgs reason)
270276
: this()
271277
{
272278
WorkType = WorkType.Shutdown;
273279
Consumer = consumer;
274280
Reason = reason;
275281
}
276282

277-
public WorkStruct(IBasicConsumer consumer, string consumerTag, ulong deliveryTag, bool redelivered,
283+
private WorkStruct(IBasicConsumer consumer, string consumerTag, ulong deliveryTag, bool redelivered,
278284
string exchange, string routingKey, in ReadOnlyBasicProperties basicProperties, RentedMemory body)
279285
{
280286
WorkType = WorkType.Deliver;
@@ -289,6 +295,33 @@ public WorkStruct(IBasicConsumer consumer, string consumerTag, ulong deliveryTag
289295
Reason = default;
290296
}
291297

298+
public static WorkStruct CreateCancel(IBasicConsumer consumer, string consumerTag)
299+
{
300+
return new WorkStruct(WorkType.Cancel, consumer, consumerTag);
301+
}
302+
303+
public static WorkStruct CreateCancelOk(IBasicConsumer consumer, string consumerTag)
304+
{
305+
return new WorkStruct(WorkType.CancelOk, consumer, consumerTag);
306+
}
307+
308+
public static WorkStruct CreateConsumeOk(IBasicConsumer consumer, string consumerTag)
309+
{
310+
return new WorkStruct(WorkType.ConsumeOk, consumer, consumerTag);
311+
}
312+
313+
public static WorkStruct CreateShutdown(IBasicConsumer consumer, ShutdownEventArgs reason)
314+
{
315+
return new WorkStruct(consumer, reason);
316+
}
317+
318+
public static WorkStruct CreateDeliver(IBasicConsumer consumer, string consumerTag, ulong deliveryTag, bool redelivered,
319+
string exchange, string routingKey, in ReadOnlyBasicProperties basicProperties, RentedMemory body)
320+
{
321+
return new WorkStruct(consumer, consumerTag, deliveryTag, redelivered,
322+
exchange, routingKey, basicProperties, body);
323+
}
324+
292325
public void Dispose() => Body.Dispose();
293326
}
294327

0 commit comments

Comments
 (0)