@@ -14,6 +14,24 @@ namespace RabbitMQ.Stream.Client
14
14
{
15
15
public record StreamSystemConfig : INamedEntity
16
16
{
17
+ internal void Validate ( )
18
+ {
19
+ if ( ConnectionPoolConfig is null )
20
+ {
21
+ throw new ArgumentException ( "ConnectionPoolConfig can't be null" ) ;
22
+ }
23
+
24
+ if ( ConnectionPoolConfig . MaxConsumersConnections < 0 )
25
+ {
26
+ throw new ArgumentException ( "MaxConsumersConnections can't be negative" ) ;
27
+ }
28
+
29
+ if ( ConnectionPoolConfig . MaxProducersConnections < 0 )
30
+ {
31
+ throw new ArgumentException ( "MaxProducersConnections can't be negative" ) ;
32
+ }
33
+ }
34
+
17
35
public string UserName { get ; set ; } = "guest" ;
18
36
public string Password { get ; set ; } = "guest" ;
19
37
public string VirtualHost { get ; set ; } = "/" ;
@@ -24,7 +42,7 @@ public record StreamSystemConfig : INamedEntity
24
42
/// </summary>
25
43
public SslOption Ssl { get ; set ; } = new ( ) ;
26
44
27
- public IList < EndPoint > Endpoints { get ; set ; } = new List < EndPoint > { new IPEndPoint ( IPAddress . Loopback , 5552 ) } ;
45
+ public IList < EndPoint > Endpoints { get ; set ; } = new List < EndPoint > { new IPEndPoint ( IPAddress . Loopback , 5552 ) } ;
28
46
29
47
public AddressResolver AddressResolver { get ; set ; }
30
48
public string ClientProvidedName { get ; set ; } = "dotnet-stream-locator" ;
@@ -59,6 +77,7 @@ private StreamSystem(ClientParameters clientParameters, Client client,
59
77
60
78
public static async Task < StreamSystem > Create ( StreamSystemConfig config , ILogger < StreamSystem > logger = null )
61
79
{
80
+ config . Validate ( ) ;
62
81
var clientParams = new ClientParameters
63
82
{
64
83
UserName = config . UserName ,
@@ -76,7 +95,7 @@ public static async Task<StreamSystem> Create(StreamSystemConfig config, ILogger
76
95
{
77
96
try
78
97
{
79
- var client = await Client . Create ( clientParams with { Endpoint = endPoint } , logger )
98
+ var client = await Client . Create ( clientParams with { Endpoint = endPoint } , logger )
80
99
. ConfigureAwait ( false ) ;
81
100
if ( ! client . IsClosed )
82
101
{
@@ -183,7 +202,7 @@ public async Task<IProducer> CreateRawSuperStreamProducer(
183
202
184
203
var r = RawSuperStreamProducer . Create ( rawSuperStreamProducerConfig ,
185
204
streamInfos ,
186
- _clientParameters with { ClientProvidedName = rawSuperStreamProducerConfig . ClientProvidedName } ,
205
+ _clientParameters with { ClientProvidedName = rawSuperStreamProducerConfig . ClientProvidedName } ,
187
206
logger ) ;
188
207
_logger ? . LogDebug ( "Raw Producer: {ProducerReference} created for SuperStream: {SuperStream}" ,
189
208
rawSuperStreamProducerConfig . Reference ,
@@ -234,7 +253,7 @@ public async Task<IConsumer> CreateSuperStreamConsumer(
234
253
235
254
var s = RawSuperStreamConsumer . Create ( rawSuperStreamConsumerConfig ,
236
255
streamInfos ,
237
- _clientParameters with { ClientProvidedName = rawSuperStreamConsumerConfig . ClientProvidedName } ,
256
+ _clientParameters with { ClientProvidedName = rawSuperStreamConsumerConfig . ClientProvidedName } ,
238
257
logger ) ;
239
258
_logger ? . LogDebug ( "Consumer: {Reference} created for SuperStream: {SuperStream}" ,
240
259
rawSuperStreamConsumerConfig . Reference , rawSuperStreamConsumerConfig . SuperStream ) ;
@@ -263,7 +282,7 @@ public async Task<IProducer> CreateRawProducer(RawProducerConfig rawProducerConf
263
282
await _semClientProvidedName . WaitAsync ( ) . ConfigureAwait ( false ) ;
264
283
rawProducerConfig . Pool = PoolProducers ;
265
284
var p = await RawProducer . Create (
266
- _clientParameters with { ClientProvidedName = rawProducerConfig . ClientProvidedName } ,
285
+ _clientParameters with { ClientProvidedName = rawProducerConfig . ClientProvidedName } ,
267
286
rawProducerConfig , metaStreamInfo , logger ) . ConfigureAwait ( false ) ;
268
287
_logger ? . LogDebug ( "Raw Producer: {Reference} created for Stream: {Stream}" ,
269
288
rawProducerConfig . Reference , rawProducerConfig . Stream ) ;
@@ -288,7 +307,7 @@ private async Task<StreamInfo> StreamInfo(string streamName)
288
307
var clientParametersEndpoint = _clientParameters . Endpoints [ 0 ] ;
289
308
switch ( clientParametersEndpoint )
290
309
{
291
- case DnsEndPoint { Host : "localhost" } dnsEndPoint :
310
+ case DnsEndPoint { Host : "localhost" } dnsEndPoint :
292
311
forceLocalHost = true ;
293
312
localPort = dnsEndPoint . Port ;
294
313
break ;
@@ -305,12 +324,12 @@ private async Task<StreamInfo> StreamInfo(string streamName)
305
324
// craft the metadata response to force using localhost
306
325
var leader = new Broker ( "localhost" , ( uint ) localPort ) ;
307
326
metaStreamInfo = new StreamInfo ( streamName , ResponseCode . Ok , leader ,
308
- new List < Broker > ( 1 ) { leader } ) ;
327
+ new List < Broker > ( 1 ) { leader } ) ;
309
328
}
310
329
else
311
330
{
312
331
await MayBeReconnectLocator ( ) . ConfigureAwait ( false ) ;
313
- var meta = await _client . QueryMetadata ( new [ ] { streamName } ) . ConfigureAwait ( false ) ;
332
+ var meta = await _client . QueryMetadata ( new [ ] { streamName } ) . ConfigureAwait ( false ) ;
314
333
metaStreamInfo = meta . StreamInfos [ streamName ] ;
315
334
}
316
335
@@ -411,7 +430,7 @@ public async Task<IConsumer> CreateRawConsumer(RawConsumerConfig rawConsumerConf
411
430
{
412
431
await _semClientProvidedName . WaitAsync ( ) . ConfigureAwait ( false ) ;
413
432
rawConsumerConfig . Pool = PoolConsumers ;
414
- var s = _clientParameters with { ClientProvidedName = rawConsumerConfig . ClientProvidedName } ;
433
+ var s = _clientParameters with { ClientProvidedName = rawConsumerConfig . ClientProvidedName } ;
415
434
var c = await RawConsumer . Create ( s ,
416
435
rawConsumerConfig , metaStreamInfo , logger ) . ConfigureAwait ( false ) ;
417
436
_logger ? . LogDebug ( "Raw Consumer: {Reference} created for Stream: {Stream}" ,
0 commit comments