private IDisposable BindObserver( IMqttMessageBus target, TEntity entity, TEntityDefinition entityDefinition, MqttQualityOfServiceLevel?qualityOfServiceLevel, bool retainMessages) => GetStateChangeDetector(entity) .Subscribe( state => { var payload = GetStateMessagePayload(entityDefinition, entity); var messageBuilder = new MqttApplicationMessageBuilder() .WithTopic(entityDefinition.StateTopic) .WithPayload(payload) .WithRetainFlag(retainMessages); if (qualityOfServiceLevel.HasValue) { messageBuilder = messageBuilder.WithQualityOfServiceLevel(qualityOfServiceLevel.Value); } var message = messageBuilder.Build(); if (message.Payload != null) { target.PublishMessage(message); } } );
public async Task <MqttClientPublishResult> SendDiscoveryAsync <TEntityDefinition>( string topic, TEntityDefinition payload, CancellationToken cancellationToken = default) where TEntityDefinition : IEntityDefinition { var payloadString = GetPayloadString(payload); var messageBuilder = new MqttApplicationMessageBuilder() .WithTopic(topic) .WithPayload(payloadString) .WithRetainFlag(Settings.Value.Retain); if (Settings.Value.QualityOfService.HasValue) { messageBuilder = messageBuilder.WithQualityOfServiceLevel(Settings.Value.QualityOfService.Value); } Logger.LogInformation("[{topic}] {payload}", topic, payloadString); var message = messageBuilder.Build(); var result = await MqttClient.PublishAsync(message, cancellationToken); return(result); }
protected MqttApplicationMessage CreateDefaultDiscoveryMessage(TEntityDefinition entityDefinition) { var messageBuilder = new MqttApplicationMessageBuilder() .WithTopic(DiscoveryTopic) .WithPayload(GetDiscoveryPayloadString(entityDefinition)) .WithRetainFlag(RetainDiscoveryMessages); if (DiscoveryMessageQualityOfServiceLevel.HasValue) { messageBuilder = messageBuilder.WithQualityOfServiceLevel(DiscoveryMessageQualityOfServiceLevel.Value); } return(messageBuilder.Build()); }
private MqttApplicationMessage BuildMessage() { byte[] data = input.SelectedBinaryValue; MqttApplicationMessageBuilder messageBuilder = new MqttApplicationMessageBuilder() .WithPayload(new MemoryStream(data), data.Length) .WithTopic(topicPublish.Text); if (qosPublish.SelectedIndex == -1) { qosPublish.SelectedIndex = 0; } messageBuilder.WithQualityOfServiceLevel((MqttQualityOfServiceLevel)qosPublish.SelectedIndex); messageBuilder.WithRetainFlag(retain.Checked); return(messageBuilder.Build()); }
protected MqttApplicationMessage CreateDefaultDeleteMessage() { var messageBuilder = new MqttApplicationMessageBuilder() .WithTopic(DiscoveryTopic) .WithPayload(Array.Empty <byte>()); if (DiscoveryMessageQualityOfServiceLevel.HasValue) { messageBuilder = messageBuilder.WithQualityOfServiceLevel(DiscoveryMessageQualityOfServiceLevel.Value); } var message = messageBuilder.Build(); return(message); }
public bool sendMessage(string theTopic, byte[] Data, MessagePriority priority = FedNetConstante.DEFAULT_PRIORITY) { if (!_theGameClient.IsConnected) { return(false); } if (theTopic == "") { return(false); } MqttApplicationMessageBuilder theMsgBuilder = new MqttApplicationMessageBuilder(); theMsgBuilder.WithTopic(FedNetConstante.CLIENT_TO_SERVER + FedNetConstante.DEFAULT_TOPIC_SEPARATOR + ClientId + FedNetConstante.DEFAULT_TOPIC_SEPARATOR + theTopic); theMsgBuilder.WithQualityOfServiceLevel((MqttQualityOfServiceLevel)priority); theMsgBuilder.WithPayload(Data); _theGameClient.PublishAsync(theMsgBuilder.Build()); return(true); }
public async Task <MqttClientPublishResult> SendDeleteAsync( string topic, CancellationToken cancellationToken = default) { var messageBuilder = new MqttApplicationMessageBuilder() .WithTopic(topic) .WithPayload(Array.Empty <byte>()) .WithRetainFlag(Settings.Value.Retain); if (Settings.Value.QualityOfService.HasValue) { messageBuilder = messageBuilder.WithQualityOfServiceLevel(Settings.Value.QualityOfService.Value); } var message = messageBuilder.Build(); var result = await MqttClient.PublishAsync(message, cancellationToken); return(result); }
private static MqttApplicationMessage BuildApplicationMessage(MqttMessageSettings mqttMessageSettings) { var mqttMessageBuilder = new MqttApplicationMessageBuilder() .WithTopic(mqttMessageSettings.Topic) .WithPayload(mqttMessageSettings.Payload); if (mqttMessageSettings.QualityOfServiceLevel.HasValue) { mqttMessageBuilder = mqttMessageBuilder.WithQualityOfServiceLevel(mqttMessageSettings.QualityOfServiceLevel.Value); } if (mqttMessageSettings.Retain.HasValue) { mqttMessageBuilder = mqttMessageBuilder.WithRetainFlag(mqttMessageSettings.Retain.Value); } var mqttMessage = mqttMessageBuilder.Build(); return(mqttMessage); }