Skip to content

Commit 5453730

Browse files
committed
* Add a ConsumerTag type.
1 parent d4e88ca commit 5453730

File tree

3 files changed

+50
-7
lines changed

3 files changed

+50
-7
lines changed

projects/RabbitMQ.Client/PublicAPI.Unshipped.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ RabbitMQ.Client.ConnectionFactoryBase
258258
RabbitMQ.Client.ConnectionFactoryBase.ConnectionFactoryBase() -> void
259259
RabbitMQ.Client.ConnectionFactoryBase.SocketFactory -> System.Func<System.Net.Sockets.AddressFamily, RabbitMQ.Client.ITcpClient>
260260
RabbitMQ.Client.Constants
261+
RabbitMQ.Client.ConsumerTag
261262
RabbitMQ.Client.DefaultBasicConsumer
262263
RabbitMQ.Client.DefaultBasicConsumer.Channel.get -> RabbitMQ.Client.IChannel
263264
RabbitMQ.Client.DefaultBasicConsumer.Channel.set -> void
@@ -391,7 +392,6 @@ RabbitMQ.Client.Exceptions.WireFormattingException.Offender.get -> object
391392
RabbitMQ.Client.Exceptions.WireFormattingException.WireFormattingException(string message) -> void
392393
RabbitMQ.Client.Exceptions.WireFormattingException.WireFormattingException(string message, object offender) -> void
393394
RabbitMQ.Client.ExchangeName
394-
RabbitMQ.Client.ExchangeName.ExchangeName() -> void
395395
RabbitMQ.Client.ExchangeType
396396
RabbitMQ.Client.ExternalMechanism
397397
RabbitMQ.Client.ExternalMechanism.ExternalMechanism() -> void
@@ -653,7 +653,6 @@ RabbitMQ.Client.PublicationAddress.PublicationAddress(string exchangeType, strin
653653
RabbitMQ.Client.QueueDeclareOk
654654
RabbitMQ.Client.QueueDeclareOk.QueueDeclareOk(string queueName, uint messageCount, uint consumerCount) -> void
655655
RabbitMQ.Client.QueueName
656-
RabbitMQ.Client.QueueName.QueueName() -> void
657656
RabbitMQ.Client.RabbitMQActivitySource
658657
RabbitMQ.Client.ReadOnlyBasicProperties
659658
RabbitMQ.Client.ReadOnlyBasicProperties.AppId.get -> string
@@ -689,7 +688,6 @@ RabbitMQ.Client.ReadOnlyBasicProperties.Timestamp.get -> RabbitMQ.Client.AmqpTim
689688
RabbitMQ.Client.ReadOnlyBasicProperties.Type.get -> string
690689
RabbitMQ.Client.ReadOnlyBasicProperties.UserId.get -> string
691690
RabbitMQ.Client.RoutingKey
692-
RabbitMQ.Client.RoutingKey.RoutingKey() -> void
693691
RabbitMQ.Client.ShutdownEventArgs
694692
RabbitMQ.Client.ShutdownEventArgs.Cause.get -> object
695693
RabbitMQ.Client.ShutdownEventArgs.ClassId.get -> ushort
@@ -892,6 +890,7 @@ virtual RabbitMQ.Client.TcpClientAdapter.ReceiveTimeout.set -> void
892890
~RabbitMQ.Client.ConnectionFactory.CreateConnectionAsync(System.Collections.Generic.IEnumerable<string> hostnames, string clientProvidedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<RabbitMQ.Client.IConnection>
893891
~RabbitMQ.Client.ConnectionFactory.CreateConnectionAsync(System.Collections.Generic.IEnumerable<string> hostnames, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<RabbitMQ.Client.IConnection>
894892
~RabbitMQ.Client.ConnectionFactory.CreateConnectionAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<RabbitMQ.Client.IConnection>
893+
~RabbitMQ.Client.ConsumerTag.ConsumerTag(string exchangeName) -> void
895894
~RabbitMQ.Client.Events.BasicDeliverEventArgs.BasicDeliverEventArgs(string consumerTag, ulong deliveryTag, bool redelivered, System.ReadOnlyMemory<byte> exchange, System.ReadOnlyMemory<byte> routingKey, in RabbitMQ.Client.ReadOnlyBasicProperties properties, System.ReadOnlyMemory<byte> body) -> void
896895
~RabbitMQ.Client.ExchangeName.ExchangeName(string exchangeName) -> void
897896
~RabbitMQ.Client.IAsyncBasicConsumer.HandleBasicDeliver(string consumerTag, ulong deliveryTag, bool redelivered, System.ReadOnlyMemory<byte> exchange, System.ReadOnlyMemory<byte> routingKey, in RabbitMQ.Client.ReadOnlyBasicProperties properties, System.ReadOnlyMemory<byte> body) -> System.Threading.Tasks.Task
@@ -945,6 +944,7 @@ virtual RabbitMQ.Client.TcpClientAdapter.ReceiveTimeout.set -> void
945944
~RabbitMQ.Client.TopologyRecoveryExceptionHandler.QueueRecoveryExceptionHandlerAsync.set -> void
946945
~static RabbitMQ.Client.AmqpString.implicit operator string(RabbitMQ.Client.AmqpString amqpString) -> string
947946
~static RabbitMQ.Client.AmqpString.implicit operator System.ReadOnlyMemory<byte>(RabbitMQ.Client.AmqpString amqpString) -> System.ReadOnlyMemory<byte>
947+
~static RabbitMQ.Client.ConsumerTag.explicit operator RabbitMQ.Client.ConsumerTag(string value) -> RabbitMQ.Client.ConsumerTag
948948
~static RabbitMQ.Client.ExchangeName.explicit operator RabbitMQ.Client.ExchangeName(string value) -> RabbitMQ.Client.ExchangeName
949949
~static RabbitMQ.Client.IChannelExtensions.AbortAsync(this RabbitMQ.Client.IChannel channel, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
950950
~static RabbitMQ.Client.IChannelExtensions.BasicConsumeAsync(this RabbitMQ.Client.IChannel channel, RabbitMQ.Client.IBasicConsumer consumer, string queue, bool autoAck = false, string consumerTag = "", bool noLocal = false, bool exclusive = false, System.Collections.Generic.IDictionary<string, object> arguments = null) -> System.Threading.Tasks.Task<string>
@@ -967,6 +967,7 @@ virtual RabbitMQ.Client.TcpClientAdapter.ReceiveTimeout.set -> void
967967
~static RabbitMQ.Client.IConnectionExtensions.CloseAsync(this RabbitMQ.Client.IConnection connection, ushort reasonCode, string reasonText, System.TimeSpan timeout) -> System.Threading.Tasks.Task
968968
~static RabbitMQ.Client.QueueName.explicit operator RabbitMQ.Client.QueueName(string value) -> RabbitMQ.Client.QueueName
969969
~static RabbitMQ.Client.RoutingKey.explicit operator RabbitMQ.Client.RoutingKey(string value) -> RabbitMQ.Client.RoutingKey
970+
~static readonly RabbitMQ.Client.ConsumerTag.Empty -> RabbitMQ.Client.ConsumerTag
970971
~static readonly RabbitMQ.Client.ExchangeName.Empty -> RabbitMQ.Client.ExchangeName
971972
~static readonly RabbitMQ.Client.QueueName.Empty -> RabbitMQ.Client.QueueName
972973
~static readonly RabbitMQ.Client.RoutingKey.Empty -> RabbitMQ.Client.RoutingKey

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

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public abstract class AmqpString
4040
private readonly string _value;
4141
private readonly ReadOnlyMemory<byte> _stringBytes;
4242

43-
public AmqpString()
43+
protected AmqpString()
4444
{
4545
_value = string.Empty;
4646
_stringBytes = ReadOnlyMemory<byte>.Empty;
@@ -112,7 +112,7 @@ public class ExchangeName : AmqpString
112112
{
113113
public static readonly ExchangeName Empty = new ExchangeName();
114114

115-
public ExchangeName() : base()
115+
private ExchangeName() : base()
116116
{
117117
}
118118

@@ -139,7 +139,7 @@ public class QueueName : AmqpString
139139
{
140140
public static readonly QueueName Empty = new QueueName();
141141

142-
public QueueName() : base()
142+
private QueueName() : base()
143143
{
144144
}
145145

@@ -165,7 +165,7 @@ public class RoutingKey : AmqpString
165165
{
166166
public static readonly RoutingKey Empty = new RoutingKey();
167167

168-
public RoutingKey() : base()
168+
private RoutingKey() : base()
169169
{
170170
}
171171

@@ -179,4 +179,29 @@ public static explicit operator RoutingKey(string value)
179179
return new RoutingKey(value);
180180
}
181181
}
182+
183+
/*
184+
* From the spec:
185+
* <domain name="consumer-tag" type="shortstr" label="consumer tag">
186+
* <doc> Identifier for the consumer, valid within the current channel. </doc>
187+
* </domain>
188+
*/
189+
public class ConsumerTag : AmqpString
190+
{
191+
public static readonly ConsumerTag Empty = new ConsumerTag();
192+
193+
private ConsumerTag() : base()
194+
{
195+
}
196+
197+
public ConsumerTag(string exchangeName)
198+
: base(exchangeName, 256, Encoding.ASCII)
199+
{
200+
}
201+
202+
public static explicit operator ConsumerTag(string value)
203+
{
204+
return new ConsumerTag(value);
205+
}
206+
}
182207
}

projects/Test/Unit/TestAmqpString.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,5 +91,22 @@ public void TestInvalidRoutingKeyThrows(string arg)
9191
{
9292
Assert.Throws<ArgumentOutOfRangeException>(() => new RoutingKey(arg));
9393
}
94+
95+
[Theory]
96+
[InlineData("$key-ABC:123.abc_456*blargh///~~~?")]
97+
[InlineData("")]
98+
public void TestValidConsumerTags(string arg)
99+
{
100+
var e = new ConsumerTag(arg);
101+
Assert.Equal(e, arg);
102+
}
103+
104+
[Theory]
105+
[InlineData("key-Евгений")]
106+
[InlineData("O0s5Vu04DVyVSMp8twUjsxa0gjcQ9ixV43U10VDVS6wPTQr14mC2x8cK6fl1G0INoJlCs4v7291iOMlBLj171F09a3VBx4sFc7SKaF683YeG9nn5IQAhQZxDE6grPr20EmHPZpMy3TO3R5aW976WTNVPDzZC5vprruJgaBOh8P9ZKRwc77v2nXUnDcz1t2rX84V8l5deX6V3l0Fv4S0bQzSbGdpD5jiPSZ44yBsZVXtv61saCgu0FNGoFSuV9207s6PiY80XbjBK9nY39R947i2s03cAg261412IS1FzS4uEoJJ6cWZ50P0SJ3S4yqvzx0n4TN4NsROlWyEwaUG4I5Glrj1mI2N28QGbkf5t8Kyo7EavaqME5TrvhPxtJGY1p")]
107+
public void TestInvalidConsumerTagThrows(string arg)
108+
{
109+
Assert.Throws<ArgumentOutOfRangeException>(() => new ConsumerTag(arg));
110+
}
94111
}
95112
}

0 commit comments

Comments
 (0)