Browse Source

dont allow publish before the client is started and adjusted testclient accordingly

release/3.x.x
JanEggers 5 years ago
parent
commit
328ffc734f
2 changed files with 4 additions and 5 deletions
  1. +1
    -2
      Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs
  2. +3
    -3
      Tests/MQTTnet.TestApp.NetCore/ManagedClientTest.cs

+ 1
- 2
Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs View File

@@ -49,8 +49,6 @@ namespace MQTTnet.Extensions.ManagedClient


if (logger == null) throw new ArgumentNullException(nameof(logger)); if (logger == null) throw new ArgumentNullException(nameof(logger));
_logger = logger.CreateChildLogger(nameof(ManagedMqttClient)); _logger = logger.CreateChildLogger(nameof(ManagedMqttClient));

Options = new ManagedMqttClientOptions();
} }


public bool IsConnected => _mqttClient.IsConnected; public bool IsConnected => _mqttClient.IsConnected;
@@ -150,6 +148,7 @@ namespace MQTTnet.Extensions.ManagedClient
ThrowIfDisposed(); ThrowIfDisposed();


if (applicationMessage == null) throw new ArgumentNullException(nameof(applicationMessage)); if (applicationMessage == null) throw new ArgumentNullException(nameof(applicationMessage));
if (Options == null) throw new InvalidOperationException("call StartAsync before publishing messages");


MqttTopicValidator.ThrowIfInvalid(applicationMessage.ApplicationMessage.Topic); MqttTopicValidator.ThrowIfInvalid(applicationMessage.ApplicationMessage.Topic);




+ 3
- 3
Tests/MQTTnet.TestApp.NetCore/ManagedClientTest.cs View File

@@ -40,11 +40,11 @@ namespace MQTTnet.TestApp.NetCore
Console.WriteLine(">> RECEIVED: " + e.ApplicationMessage.Topic); Console.WriteLine(">> RECEIVED: " + e.ApplicationMessage.Topic);
}); });


await managedClient.PublishAsync(builder => builder.WithTopic("Step").WithPayload("1"));
await managedClient.PublishAsync(builder => builder.WithTopic("Step").WithPayload("2").WithAtLeastOnceQoS());

await managedClient.StartAsync(options); await managedClient.StartAsync(options);


await managedClient.PublishAsync(builder => builder.WithTopic("Step").WithPayload("1"));
await managedClient.PublishAsync(builder => builder.WithTopic("Step").WithPayload("2").WithAtLeastOnceQoS());
await managedClient.SubscribeAsync(new TopicFilter { Topic = "xyz", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce }); await managedClient.SubscribeAsync(new TopicFilter { Topic = "xyz", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce });
await managedClient.SubscribeAsync(new TopicFilter { Topic = "abc", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce }); await managedClient.SubscribeAsync(new TopicFilter { Topic = "abc", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce });




Loading…
Cancel
Save