mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-11-01 11:42:38 +08:00
Add support for TopicAlias in application message builder.
This commit is contained in:
@@ -251,13 +251,18 @@ namespace MQTTnet.Formatter.V5
|
|||||||
var propertiesWriter = new MqttV500PropertiesWriter();
|
var propertiesWriter = new MqttV500PropertiesWriter();
|
||||||
if (packet.Properties != null)
|
if (packet.Properties != null)
|
||||||
{
|
{
|
||||||
propertiesWriter.WritePayloadFormatIndicator(packet.Properties.PayloadFormatIndicator);
|
if (packet.Properties.TopicAlias == 0)
|
||||||
propertiesWriter.WriteMessageExpiryInterval(packet.Properties.MessageExpiryInterval);
|
{
|
||||||
propertiesWriter.WriteTopicAlias(packet.Properties.TopicAlias);
|
throw new MqttProtocolViolationException("A Topic Alias of 0 is not permitted. A sender MUST NOT send a PUBLISH packet containing a Topic Alias which has the value 0 [MQTT-3.3.2-8].");
|
||||||
propertiesWriter.WriteResponseTopic(packet.Properties.ResponseTopic);
|
}
|
||||||
propertiesWriter.WriteCorrelationData(packet.Properties.CorrelationData);
|
|
||||||
propertiesWriter.WriteSubscriptionIdentifiers(packet.Properties.SubscriptionIdentifiers);
|
|
||||||
propertiesWriter.WriteContentType(packet.Properties.ContentType);
|
propertiesWriter.WriteContentType(packet.Properties.ContentType);
|
||||||
|
propertiesWriter.WriteCorrelationData(packet.Properties.CorrelationData);
|
||||||
|
propertiesWriter.WriteMessageExpiryInterval(packet.Properties.MessageExpiryInterval);
|
||||||
|
propertiesWriter.WritePayloadFormatIndicator(packet.Properties.PayloadFormatIndicator);
|
||||||
|
propertiesWriter.WriteResponseTopic(packet.Properties.ResponseTopic);
|
||||||
|
propertiesWriter.WriteSubscriptionIdentifiers(packet.Properties.SubscriptionIdentifiers);
|
||||||
|
propertiesWriter.WriteTopicAlias(packet.Properties.TopicAlias);
|
||||||
propertiesWriter.WriteUserProperties(packet.Properties.UserProperties);
|
propertiesWriter.WriteUserProperties(packet.Properties.UserProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -222,9 +222,14 @@ namespace MQTTnet
|
|||||||
|
|
||||||
public MqttApplicationMessage Build()
|
public MqttApplicationMessage Build()
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(_topic))
|
if (!_topicAlias.HasValue && string.IsNullOrEmpty(_topic))
|
||||||
{
|
{
|
||||||
throw new MqttProtocolViolationException("Topic is not set.");
|
throw new MqttProtocolViolationException("Topic or TopicAlias is not set.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_topicAlias == 0)
|
||||||
|
{
|
||||||
|
throw new MqttProtocolViolationException("A Topic Alias of 0 is not permitted. A sender MUST NOT send a PUBLISH packet containing a Topic Alias which has the value 0 [MQTT-3.3.2-8].");
|
||||||
}
|
}
|
||||||
|
|
||||||
var applicationMessage = new MqttApplicationMessage
|
var applicationMessage = new MqttApplicationMessage
|
||||||
|
|||||||
Reference in New Issue
Block a user