Skip to content

Commit f39ff6f

Browse files
committed
* Test fixes
* Implement GetHashCode and Equals when AmqpString has only memory in it.
1 parent 0f2cc89 commit f39ff6f

File tree

5 files changed

+22
-11
lines changed

5 files changed

+22
-11
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,19 +157,19 @@ public bool Equals(AmqpString other)
157157
{
158158
if (_value == null)
159159
{
160-
throw new InvalidOperationException("TODO");
160+
return _stringBytes.Equals(other._stringBytes);
161161
}
162162
else
163163
{
164-
return _value == other._value;
164+
return _value.Equals(other._value);
165165
}
166166
}
167167

168168
public override int GetHashCode()
169169
{
170170
if (_value == null)
171171
{
172-
throw new InvalidOperationException("TODO");
172+
return _stringBytes.GetHashCode();
173173
}
174174
else
175175
{

projects/RabbitMQ.Client/client/framing/BasicCancel.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,11 @@ public int GetRequiredBufferSize()
6161
bufferSize += _consumerTag.Length; // _consumerTag in bytes
6262
return bufferSize;
6363
}
64+
65+
public static ConsumerTag GetConsumerTag(ReadOnlyMemory<byte> data)
66+
{
67+
WireFormatting.ReadShortMemory(data, out ReadOnlyMemory<byte> consumerTagMemory);
68+
return new ConsumerTag(consumerTagMemory);
69+
}
6470
}
6571
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ protected async Task<bool> HandleBasicCancelAsync(IncomingCommand cmd, Cancellat
655655
{
656656
try
657657
{
658-
ConsumerTag consumerTag = new ConsumerTag(cmd.MethodMemory);
658+
ConsumerTag consumerTag = BasicCancel.GetConsumerTag(cmd.MethodMemory);
659659
await ConsumerDispatcher.HandleBasicCancelAsync(consumerTag, cancellationToken)
660660
.ConfigureAwait(false);
661661
return true;

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,15 @@ public IBasicConsumer GetAndRemoveConsumer(ConsumerTag tag)
4545
{
4646
lock (_consumers)
4747
{
48-
IBasicConsumer result = _consumers.Remove((ReadOnlyMemory<byte>)tag,
49-
out (IBasicConsumer consumer, ConsumerTag consumerTag) consumerPair) ?
50-
consumerPair.consumer : GetDefaultOrFallbackConsumer();
51-
return result;
48+
var tagMem = (ReadOnlyMemory<byte>)tag;
49+
if (_consumers.Remove(tagMem, out (IBasicConsumer consumer, ConsumerTag consumerTag) consumerPair))
50+
{
51+
return consumerPair.consumer;
52+
}
53+
else
54+
{
55+
return GetDefaultOrFallbackConsumer();
56+
}
5257
}
5358
}
5459

projects/Test/Integration/TestConsumerCancelNotify.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public TestConsumerCancelNotify(ITestOutputHelper output) : base(output)
5050
[Fact]
5151
public Task TestConsumerCancelNotification()
5252
{
53-
return TestConsumerCancelAsync("queue_consumer_cancel_notify", false);
53+
return TestConsumerCancelAsync(GenerateQueueName(), false);
5454
}
5555

5656
[Fact]
@@ -86,11 +86,11 @@ public async Task TestCorrectConsumerTag()
8686
await _channel.QueueDeleteAsync(q2);
8787
}
8888

89-
private async Task TestConsumerCancelAsync(string queue, bool eventMode)
89+
private async Task TestConsumerCancelAsync(QueueName queue, bool eventMode)
9090
{
9191
await _channel.QueueDeclareAsync(queue, false, true, false);
9292
IBasicConsumer consumer = new CancelNotificationConsumer(_channel, this, eventMode);
93-
string actualConsumerTag = await _channel.BasicConsumeAsync(queue, false, consumer);
93+
ConsumerTag actualConsumerTag = await _channel.BasicConsumeAsync(queue, false, consumer);
9494

9595
await _channel.QueueDeleteAsync(queue);
9696
await WaitAsync(_tcs, "HandleBasicCancel / Cancelled event");

0 commit comments

Comments
 (0)