Skip to content

Commit 0f15626

Browse files
Updated to use QoS read from configuration file
1 parent 3e26bf2 commit 0f15626

5 files changed

Lines changed: 24 additions & 8 deletions

File tree

agent/Modules/MTConnect.NET-AgentModule-MqttBroker/Module.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public Module(IMTConnectAgentBroker mtconnectAgent, object configuration) : base
5656

5757
case MqttTopicStructure.Entity:
5858

59-
_entityServer = new MTConnectMqttEntityServer(_configuration.TopicPrefix, _configuration.DocumentFormat);
59+
_entityServer = new MTConnectMqttEntityServer(_configuration.TopicPrefix, _configuration.DocumentFormat, _configuration.QoS);
6060
Agent.DeviceAdded += AgentDeviceAdded;
6161
Agent.ObservationAdded += AgentObservationAdded;
6262
Agent.AssetAdded += AgentAssetAdded;

agent/Modules/MTConnect.NET-AgentModule-MqttRelay/Module.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public Module(IMTConnectAgentBroker mtconnectAgent, object configuration) : base
5757

5858
case MqttTopicStructure.Entity:
5959

60-
_entityServer = new MTConnectMqttEntityServer(_configuration.TopicPrefix, _configuration.DocumentFormat);
60+
_entityServer = new MTConnectMqttEntityServer(_configuration.TopicPrefix, _configuration.DocumentFormat, _configuration.QoS);
6161
Agent.DeviceAdded += AgentDeviceAdded;
6262
Agent.ObservationAdded += AgentObservationAdded;
6363
Agent.AssetAdded += AgentAssetAdded;

libraries/MTConnect.NET-MQTT/Configurations/IMTConnectMqttEntityServerConfiguration.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,10 @@ public interface IMTConnectMqttEntityServerConfiguration
1414
///
1515
/// </summary>
1616
string DocumentFormat { get; }
17+
18+
/// <summary>
19+
///
20+
/// </summary>
21+
int QoS { get; set; }
1722
}
1823
}

libraries/MTConnect.NET-MQTT/Configurations/MTConnectMqttEntityServerConfiguration.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2023 TrakHound Inc., All Rights Reserved.
1+
// Copyright (c) 2024 TrakHound Inc., All Rights Reserved.
22
// TrakHound Inc. licenses this file to you under the MIT license.
33

44
namespace MTConnect.Configurations
@@ -9,11 +9,14 @@ public class MTConnectMqttEntityServerConfiguration : IMTConnectMqttEntityServer
99

1010
public string DocumentFormat { get; set; }
1111

12+
public int QoS { get; set; }
13+
1214

1315
public MTConnectMqttEntityServerConfiguration()
1416
{
1517
TopicPrefix = "MTConnect";
1618
DocumentFormat = "JSON";
19+
QoS = 0;
1720
}
1821
}
1922
}

libraries/MTConnect.NET-MQTT/MTConnectMqttEntityServer.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ public class MTConnectMqttEntityServer
2323
public string TopicPrefix => _configuration.TopicPrefix;
2424

2525

26-
public MTConnectMqttEntityServer(string topicPrefix = null, string documentFormat = DocumentFormat.JSON)
26+
public MTConnectMqttEntityServer(string topicPrefix = null, string documentFormat = DocumentFormat.JSON, int qos = 0)
2727
{
2828
var configuration = new MTConnectMqttEntityServerConfiguration();
2929
configuration.TopicPrefix = topicPrefix;
3030
configuration.DocumentFormat = documentFormat;
31+
configuration.QoS = qos;
3132
_configuration = configuration;
3233
}
3334

@@ -81,7 +82,7 @@ private MqttApplicationMessage CreateMessage(IDevice device)
8182
messageBuilder.WithTopic(topic);
8283
messageBuilder.WithPayload(formatResult.Content);
8384
messageBuilder.WithRetainFlag(true);
84-
messageBuilder.WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce);
85+
messageBuilder.WithQualityOfServiceLevel(GetQualityOfService(_configuration.QoS));
8586
return messageBuilder.Build();
8687
}
8788
}
@@ -168,7 +169,7 @@ private MqttApplicationMessage CreateMessage(IObservation observation)
168169
messageBuilder.WithTopic(topic);
169170
messageBuilder.WithPayload(formatResult.Content);
170171
messageBuilder.WithRetainFlag(true);
171-
messageBuilder.WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce);
172+
messageBuilder.WithQualityOfServiceLevel(GetQualityOfService(_configuration.QoS));
172173
return messageBuilder.Build();
173174
}
174175
}
@@ -200,7 +201,7 @@ private MqttApplicationMessage CreateMessage(IEnumerable<IObservation> observati
200201
messageBuilder.WithTopic(topic);
201202
messageBuilder.WithPayload(formatResult.Content);
202203
messageBuilder.WithRetainFlag(true);
203-
messageBuilder.WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce);
204+
messageBuilder.WithQualityOfServiceLevel(GetQualityOfService(_configuration.QoS));
204205
return messageBuilder.Build();
205206
}
206207
}
@@ -253,12 +254,19 @@ private MqttApplicationMessage CreateMessage(IAsset asset)
253254
messageBuilder.WithTopic(topic);
254255
messageBuilder.WithPayload(formatResult.Content);
255256
messageBuilder.WithRetainFlag(true);
256-
messageBuilder.WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce);
257+
messageBuilder.WithQualityOfServiceLevel(GetQualityOfService(_configuration.QoS));
257258
return messageBuilder.Build();
258259
}
259260
}
260261

261262
return null;
262263
}
264+
265+
private static MQTTnet.Protocol.MqttQualityOfServiceLevel GetQualityOfService(int qos)
266+
{
267+
if (qos == 1) return MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce;
268+
else if (qos == 2) return MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce;
269+
else return MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce;
270+
}
263271
}
264272
}

0 commit comments

Comments
 (0)