Skip to content

Commit 479ef6b

Browse files
committed
* Remove implicit conversion from string to ExchangeName
1 parent 235ceea commit 479ef6b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+201
-183
lines changed

projects/Benchmarks/Networking/Networking_BasicDeliver_Commons.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static async Task Publish_Hello_World(IConnection connection, uint messag
2828

2929
for (int i = 0; i < messageCount; i++)
3030
{
31-
await channel.BasicPublishAsync("", queue.QueueName, body);
31+
await channel.BasicPublishAsync(ExchangeName.Empty, queue.QueueName, body);
3232
}
3333

3434
await tcs.Task;

projects/RabbitMQ.Client/PublicAPI.Unshipped.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -598,9 +598,9 @@ RabbitMQ.Client.IReadOnlyBasicProperties.Type.get -> string
598598
RabbitMQ.Client.IReadOnlyBasicProperties.UserId.get -> string
599599
RabbitMQ.Client.IRecordedBinding
600600
RabbitMQ.Client.IRecordedBinding.Arguments.get -> System.Collections.Generic.IDictionary<string, object>
601-
RabbitMQ.Client.IRecordedBinding.Destination.get -> string
602-
RabbitMQ.Client.IRecordedBinding.RoutingKey.get -> string
603-
RabbitMQ.Client.IRecordedBinding.Source.get -> string
601+
RabbitMQ.Client.IRecordedBinding.Destination.get -> RabbitMQ.Client.AmqpString!
602+
RabbitMQ.Client.IRecordedBinding.RoutingKey.get -> RabbitMQ.Client.RoutingKey!
603+
RabbitMQ.Client.IRecordedBinding.Source.get -> RabbitMQ.Client.AmqpString!
604604
RabbitMQ.Client.IRecordedConsumer
605605
RabbitMQ.Client.IRecordedConsumer.Arguments.get -> System.Collections.Generic.IDictionary<string, object>
606606
RabbitMQ.Client.IRecordedConsumer.AutoAck.get -> bool
@@ -953,7 +953,7 @@ virtual RabbitMQ.Client.TcpClientAdapter.ReceiveTimeout.set -> void
953953
~static RabbitMQ.Client.AmqpString.operator !=(RabbitMQ.Client.AmqpString amqpString1, RabbitMQ.Client.AmqpString amqpString2) -> bool
954954
~static RabbitMQ.Client.AmqpString.operator ==(RabbitMQ.Client.AmqpString amqpString1, RabbitMQ.Client.AmqpString amqpString2) -> bool
955955
~static RabbitMQ.Client.ConsumerTag.implicit operator RabbitMQ.Client.ConsumerTag(string value) -> RabbitMQ.Client.ConsumerTag
956-
~static RabbitMQ.Client.ExchangeName.implicit operator RabbitMQ.Client.ExchangeName(string value) -> RabbitMQ.Client.ExchangeName
956+
~static RabbitMQ.Client.ExchangeName.explicit operator RabbitMQ.Client.ExchangeName(string value) -> RabbitMQ.Client.ExchangeName
957957
~static RabbitMQ.Client.ExchangeType.implicit operator RabbitMQ.Client.ExchangeType(string value) -> RabbitMQ.Client.ExchangeType
958958
~static RabbitMQ.Client.ExchangeType.implicit operator string(RabbitMQ.Client.ExchangeType exchangeType) -> string
959959
~static RabbitMQ.Client.ExchangeType.operator !=(RabbitMQ.Client.ExchangeType exchangeType1, RabbitMQ.Client.ExchangeType exchangeType2) -> bool
@@ -983,6 +983,7 @@ virtual RabbitMQ.Client.TcpClientAdapter.ReceiveTimeout.set -> void
983983
~static RabbitMQ.Client.QueueName.implicit operator RabbitMQ.Client.QueueName(string value) -> RabbitMQ.Client.QueueName
984984
~static RabbitMQ.Client.RoutingKey.implicit operator RabbitMQ.Client.RoutingKey(string value) -> RabbitMQ.Client.RoutingKey
985985
~static readonly RabbitMQ.Client.ConsumerTag.Empty -> RabbitMQ.Client.ConsumerTag
986+
~static readonly RabbitMQ.Client.ExchangeName.AmqDirect -> RabbitMQ.Client.ExchangeName
986987
~static readonly RabbitMQ.Client.ExchangeName.Empty -> RabbitMQ.Client.ExchangeName
987988
~static readonly RabbitMQ.Client.ExchangeType.Direct -> RabbitMQ.Client.ExchangeType
988989
~static readonly RabbitMQ.Client.ExchangeType.Fanout -> RabbitMQ.Client.ExchangeType

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ public int CompareTo(AmqpString other)
197197
public class ExchangeName : AmqpString
198198
{
199199
public static readonly ExchangeName Empty = new ExchangeName();
200+
public static readonly ExchangeName AmqDirect = new ExchangeName("amq.direct");
200201

201202
private ExchangeName() : base()
202203
{
@@ -207,8 +208,7 @@ public ExchangeName(string exchangeName)
207208
{
208209
}
209210

210-
// TODO explicit
211-
public static implicit operator ExchangeName(string value)
211+
public static explicit operator ExchangeName(string value)
212212
{
213213
return new ExchangeName(value);
214214
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ namespace RabbitMQ.Client
55
#nullable enable
66
public interface IRecordedBinding
77
{
8-
string Source { get; }
8+
AmqpString Source { get; }
99

10-
string Destination { get; }
10+
AmqpString Destination { get; }
1111

12-
string RoutingKey { get; }
12+
RoutingKey RoutingKey { get; }
1313

1414
IDictionary<string, object>? Arguments { get; }
1515
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private void DoRecordExchange(in RecordedExchange exchange)
8282
_recordedExchanges[exchange.Name] = exchange;
8383
}
8484

85-
internal async ValueTask DeleteRecordedExchangeAsync(string exchangeName,
85+
internal async ValueTask DeleteRecordedExchangeAsync(ExchangeName exchangeName,
8686
bool recordedEntitiesSemaphoreHeld, CancellationToken cancellationToken)
8787
{
8888
if (_disposed)
@@ -110,7 +110,7 @@ await DoDeleteRecordedExchangeAsync(exchangeName, cancellationToken)
110110
}
111111
}
112112

113-
async Task DoDeleteRecordedExchangeAsync(string exchangeName, CancellationToken cancellationToken)
113+
async Task DoDeleteRecordedExchangeAsync(ExchangeName exchangeName, CancellationToken cancellationToken)
114114
{
115115
_recordedExchanges.Remove(exchangeName);
116116

@@ -122,15 +122,15 @@ async Task DoDeleteRecordedExchangeAsync(string exchangeName, CancellationToken
122122
await DeleteRecordedBindingAsync(binding,
123123
recordedEntitiesSemaphoreHeld: true, cancellationToken)
124124
.ConfigureAwait(false);
125-
await DeleteAutoDeleteExchangeAsync(binding.Source,
125+
await DeleteAutoDeleteExchangeAsync((ExchangeName)binding.Source,
126126
recordedEntitiesSemaphoreHeld: true, cancellationToken)
127127
.ConfigureAwait(false);
128128
}
129129
}
130130
}
131131
}
132132

133-
internal async ValueTask DeleteAutoDeleteExchangeAsync(string exchangeName,
133+
internal async ValueTask DeleteAutoDeleteExchangeAsync(ExchangeName exchangeName,
134134
bool recordedEntitiesSemaphoreHeld, CancellationToken cancellationToken)
135135
{
136136
if (_disposed)
@@ -157,9 +157,9 @@ await _recordedEntitiesSemaphore.WaitAsync(cancellationToken)
157157
}
158158
}
159159

160-
private void DoDeleteAutoDeleteExchange(string exchangeName)
160+
private void DoDeleteAutoDeleteExchange(ExchangeName exchangeName)
161161
{
162-
if (_recordedExchanges.TryGetValue(exchangeName, out var recordedExchange) && recordedExchange.AutoDelete)
162+
if (_recordedExchanges.TryGetValue(exchangeName, out RecordedExchange recordedExchange) && recordedExchange.AutoDelete)
163163
{
164164
if (!AnyBindingsOnExchange(exchangeName))
165165
{
@@ -256,7 +256,7 @@ async ValueTask DoDeleteRecordedQueueAsync(QueueName queueName, CancellationToke
256256
await DeleteRecordedBindingAsync(binding,
257257
recordedEntitiesSemaphoreHeld: true, cancellationToken)
258258
.ConfigureAwait(false);
259-
await DeleteAutoDeleteExchangeAsync(binding.Source,
259+
await DeleteAutoDeleteExchangeAsync((ExchangeName)binding.Source,
260260
recordedEntitiesSemaphoreHeld: true, cancellationToken)
261261
.ConfigureAwait(false);
262262
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ namespace RabbitMQ.Client.Impl
4545
private readonly RoutingKey _routingKey;
4646
private readonly IDictionary<string, object>? _arguments;
4747

48-
public string Destination => _destination;
49-
public string Source => _source;
50-
public string RoutingKey => _routingKey;
48+
public AmqpString Destination => _destination;
49+
public AmqpString Source => _source;
50+
public RoutingKey RoutingKey => _routingKey;
5151
public IDictionary<string, object>? Arguments => _arguments;
5252

5353
public RecordedBinding(bool isQueueBinding, AmqpString destination, AmqpString source, RoutingKey routingKey,

projects/Test/Applications/MassPublish/Program.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ static class Program
1414
const string RmqHost = "localhost";
1515

1616
const string AppId = "MassPublish";
17-
const string ExchangeName = "MassPublish-ex";
18-
const string QueueName = "MassPublish-queue";
19-
const string RoutingKey = "MassPublish-queue";
20-
const string ConsumerTag = "MassPublish-consumer";
17+
static readonly ExchangeName ExchangeName = new("MassPublish-ex");
18+
static readonly QueueName QueueName = new("MassPublish-queue");
19+
static readonly RoutingKey RoutingKey = new("MassPublish-queue");
20+
static readonly ConsumerTag ConsumerTag = new("MassPublish-consumer");
2121
static readonly int ConnectionCount = Environment.ProcessorCount;
2222

2323
const int BatchesToSend = 64;

projects/Test/Common/TestConnectionRecoveryBase.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ protected async Task AssertConsumerCountAsync(IChannel ch, string q, uint count)
6767
Assert.Equal(count, ok.ConsumerCount);
6868
}
6969

70-
protected async Task AssertExchangeRecoveryAsync(IChannel m, string x)
70+
protected async Task AssertExchangeRecoveryAsync(IChannel m, ExchangeName x)
7171
{
7272
await m.ConfirmSelectAsync();
7373
await WithTemporaryNonExclusiveQueueAsync(m, async (_, q) =>
@@ -95,7 +95,7 @@ protected async Task AssertQueueRecoveryAsync(IChannel ch, string q, bool exclus
9595
durable: false, exclusive: exclusive, autoDelete: false, arguments: arguments);
9696
Assert.Equal(0u, ok1.MessageCount);
9797

98-
await ch.BasicPublishAsync("", q, _messageBody);
98+
await ch.BasicPublishAsync(ExchangeName.Empty, q, _messageBody);
9999
Assert.True(await WaitForConfirmsWithCancellationAsync(ch));
100100

101101
RabbitMQ.Client.QueueDeclareOk ok2 = await ch.QueueDeclareAsync(queue: q, passive: false,
@@ -190,13 +190,13 @@ internal async Task CloseAndWaitForShutdownAsync(AutorecoveringConnection conn)
190190
await WaitAsync(sl, "connection shutdown");
191191
}
192192

193-
protected static async Task<string> DeclareNonDurableExchangeAsync(IChannel ch, string exchangeName)
193+
protected static async Task<string> DeclareNonDurableExchangeAsync(IChannel ch, ExchangeName exchangeName)
194194
{
195-
await ch.ExchangeDeclareAsync(exchangeName, "fanout", false);
195+
await ch.ExchangeDeclareAsync(exchangeName, ExchangeType.Fanout, false);
196196
return exchangeName;
197197
}
198198

199-
protected async Task PublishMessagesWhileClosingConnAsync(string queueName)
199+
protected async Task PublishMessagesWhileClosingConnAsync(QueueName queueName)
200200
{
201201
using (AutorecoveringConnection publishingConn = await CreateAutorecoveringConnectionAsync())
202202
{
@@ -211,7 +211,7 @@ protected async Task PublishMessagesWhileClosingConnAsync(string queueName)
211211
await CloseConnectionAsync(_conn);
212212
}
213213

214-
await publishingChannel.BasicPublishAsync(string.Empty, queueName, _messageBody);
214+
await publishingChannel.BasicPublishAsync(ExchangeName.Empty, (RoutingKey)queueName, _messageBody);
215215
await publishingChannel.WaitForConfirmsOrDieAsync();
216216
}
217217

@@ -343,7 +343,8 @@ public virtual Task PostHandleDeliveryAsync(ulong deliveryTag)
343343
}
344344
}
345345

346-
protected static async Task<bool> SendAndConsumeMessageAsync(IConnection conn, string queue, string exchange, string routingKey)
346+
protected static async Task<bool> SendAndConsumeMessageAsync(IConnection conn,
347+
QueueName queue, ExchangeName exchange, RoutingKey routingKey)
347348
{
348349
using (IChannel ch = await conn.CreateChannelAsync())
349350
{

projects/Test/Integration/ConnectionRecovery/TestBasicAckAndBasicNack.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public async Task TestBasicAckAfterBasicGetAndChannelRecovery()
139139
string q = GenerateQueueName();
140140
await _channel.QueueDeclareAsync(q, false, false, false);
141141
// create an offset
142-
await _channel.BasicPublishAsync("", q, _messageBody);
142+
await _channel.BasicPublishAsync(ExchangeName.Empty, q, _messageBody);
143143
await Task.Delay(50);
144144
BasicGetResult g = await _channel.BasicGetAsync(q, false);
145145
await CloseAndWaitForRecoveryAsync();
@@ -165,7 +165,7 @@ public async Task TestBasicAckEventHandlerRecovery()
165165

166166
await WithTemporaryNonExclusiveQueueAsync(_channel, (ch, q) =>
167167
{
168-
return ch.BasicPublishAsync("", (RoutingKey)q, _messageBody).AsTask();
168+
return ch.BasicPublishAsync(ExchangeName.Empty, (RoutingKey)q, _messageBody).AsTask();
169169
});
170170

171171
await WaitAsync(tcs, "basic acks/nacks");

projects/Test/Integration/ConnectionRecovery/TestConnectionRecovery.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Task MessageReceived(object sender, BasicDeliverEventArgs e)
6262
}
6363

6464
var guid = Guid.NewGuid();
65-
string exchangeName = $"ex-gh-1035-{guid}";
65+
ExchangeName exchangeName = new ExchangeName($"ex-gh-1035-{guid}");
6666
string queueName = $"q-gh-1035-{guid}";
6767

6868
await _channel.ExchangeDeclareAsync(exchange: exchangeName,

0 commit comments

Comments
 (0)