mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 11:45:43 +08:00
Add more property implementations.
This commit is contained in:
@@ -24,7 +24,7 @@ namespace MQTTnet.Packets
|
||||
|
||||
public MqttApplicationMessage WillMessage { get; set; }
|
||||
|
||||
public List<Property> Properties { get; set; }
|
||||
public List<IProperty> Properties { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class AssignedClientIdentifierProperty : StringProperty
|
||||
{
|
||||
public AssignedClientIdentifierProperty(string value)
|
||||
: base((byte)PropertyID.AssignedClientIdentifer, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class AuthenticationDataProperty : BinaryDataProperty
|
||||
{
|
||||
public AuthenticationDataProperty(ArraySegment<byte> data)
|
||||
: base((byte)PropertyID.AuthenticationData, data)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class AuthenticationMethodProperty : StringProperty
|
||||
{
|
||||
public AuthenticationMethodProperty(string value)
|
||||
: base((byte)PropertyID.AuthenticationMethod, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using MQTTnet.Serializer;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class BinaryDataProperty : IProperty
|
||||
{
|
||||
public BinaryDataProperty(byte id, ArraySegment<byte> data)
|
||||
{
|
||||
if (data.Array == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(data));
|
||||
}
|
||||
|
||||
Id = id;
|
||||
Data = data;
|
||||
}
|
||||
|
||||
public byte Id { get; }
|
||||
|
||||
public ArraySegment<byte> Data { get; }
|
||||
|
||||
public void WriteTo(MqttPacketWriter writer)
|
||||
{
|
||||
if (writer == null) throw new ArgumentNullException(nameof(writer));
|
||||
|
||||
writer.Write((ushort)Data.Count);
|
||||
writer.Write(Data);
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
-2
@@ -3,13 +3,16 @@ using MQTTnet.Serializer;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class ByteValue : IPropertyValue
|
||||
public class ByteProperty : IProperty
|
||||
{
|
||||
public ByteValue(byte value)
|
||||
public ByteProperty(byte id, byte value)
|
||||
{
|
||||
Id = id;
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public byte Id { get; }
|
||||
|
||||
public byte Value { get; }
|
||||
|
||||
public void WriteTo(MqttPacketWriter writer)
|
||||
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using MQTTnet.Serializer;
|
||||
|
||||
namespace MQTTnet.Packets.Properties.BaseTypes
|
||||
{
|
||||
public class FourByteIntegerValue : IProperty
|
||||
{
|
||||
public FourByteIntegerValue(byte id, uint value)
|
||||
{
|
||||
Id = id;
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public byte Id { get; }
|
||||
|
||||
public uint Value { get; }
|
||||
|
||||
public void WriteTo(MqttPacketWriter writer)
|
||||
{
|
||||
if (writer == null) throw new ArgumentNullException(nameof(writer));
|
||||
|
||||
// TODO: Check if order must be reversed like for ushort.
|
||||
var bytes = BitConverter.GetBytes(Value);
|
||||
writer.Write(bytes, 0, bytes.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
-2
@@ -3,13 +3,16 @@ using MQTTnet.Serializer;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class StringValue : IPropertyValue
|
||||
public class StringProperty : IProperty
|
||||
{
|
||||
public StringValue(string value)
|
||||
public StringProperty(byte id, string value)
|
||||
{
|
||||
Id = id;
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public byte Id { get; }
|
||||
|
||||
public string Value { get; }
|
||||
|
||||
public void WriteTo(MqttPacketWriter writer)
|
||||
+7
-4
@@ -1,22 +1,25 @@
|
||||
using System;
|
||||
using MQTTnet.Serializer;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
namespace MQTTnet.Packets.Properties.BaseTypes
|
||||
{
|
||||
public class TwoByteIntegerValue : IPropertyValue
|
||||
public class TwoByteIntegerProperty : IProperty
|
||||
{
|
||||
public TwoByteIntegerValue(ushort value)
|
||||
public TwoByteIntegerProperty(byte id, ushort value)
|
||||
{
|
||||
Id = id;
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public byte Id { get; }
|
||||
|
||||
public ushort Value { get; }
|
||||
|
||||
public void WriteTo(MqttPacketWriter writer)
|
||||
{
|
||||
if (writer == null) throw new ArgumentNullException(nameof(writer));
|
||||
|
||||
throw new NotImplementedException();
|
||||
writer.Write(Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using MQTTnet.Serializer;
|
||||
|
||||
namespace MQTTnet.Packets.Properties.BaseTypes
|
||||
{
|
||||
public class VariableByteIntegerProperty : IProperty
|
||||
{
|
||||
public VariableByteIntegerProperty(byte id, uint value)
|
||||
{
|
||||
Id = id;
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public byte Id { get; }
|
||||
|
||||
public uint Value { get; }
|
||||
|
||||
public void WriteTo(MqttPacketWriter writer)
|
||||
{
|
||||
if (writer == null) throw new ArgumentNullException(nameof(writer));
|
||||
|
||||
var buffer = MqttPacketWriter.EncodeVariableByteInteger(Value);
|
||||
writer.Write(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class ContentTypeProperty : StringProperty
|
||||
{
|
||||
public ContentTypeProperty(string value)
|
||||
: base((byte)PropertyID.ContentType, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class CorrelationDataProperty : BinaryDataProperty
|
||||
{
|
||||
public CorrelationDataProperty(ArraySegment<byte> data)
|
||||
: base((byte)PropertyID.CorrelationData, data)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -2,8 +2,10 @@
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public interface IPropertyValue
|
||||
public interface IProperty
|
||||
{
|
||||
byte Id { get; }
|
||||
|
||||
void WriteTo(MqttPacketWriter writer);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using MQTTnet.Packets.Properties.BaseTypes;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class MessageExpiryIntervalProperty : FourByteIntegerValue
|
||||
{
|
||||
public MessageExpiryInterval(uint value)
|
||||
: base((byte)PropertyID.MessageExpiryInterval, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class PayloadFormatIndicatorProperty : ByteProperty
|
||||
{
|
||||
public PayloadFormatIndicatorProperty(byte value)
|
||||
: base((byte)PropertyID.PayloadFormatIndicator, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class Property
|
||||
{
|
||||
public PropertyType Type { get; set; }
|
||||
|
||||
public IPropertyValue Value { get; set; }
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public enum PropertyType
|
||||
public enum PropertyID
|
||||
{
|
||||
PayloadFormatIndicator = 1,
|
||||
MessageExpiryInterval = 2,
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class RequestProblemInformationProperty : ByteProperty
|
||||
{
|
||||
public RequestProblemInformationProperty(byte value)
|
||||
: base((byte)PropertyID.RequestProblemInformation, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class RequestResponseInformationProperty : ByteProperty
|
||||
{
|
||||
public RequestResponseInformationProperty(byte value)
|
||||
: base((byte)PropertyID.RequestResponseInformation, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class ResponseTopicProperty : StringProperty
|
||||
{
|
||||
public ResponseTopicProperty(string value)
|
||||
: base((byte)PropertyID.ResponseTopic, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using MQTTnet.Packets.Properties.BaseTypes;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class ServerKeepAliveProperty : TwoByteIntegerProperty
|
||||
{
|
||||
public ServerKeepAliveProperty(ushort value)
|
||||
: base((byte)PropertyID.ServerKeepAlive, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using MQTTnet.Packets.Properties.BaseTypes;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class SessionExpiryIntervalProperty : FourByteIntegerValue
|
||||
{
|
||||
public SessionExpiryIntervalProperty(uint value)
|
||||
: base((byte)PropertyID.SessionExpiryInterval, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using MQTTnet.Packets.Properties.BaseTypes;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class SubscriptionIdentifierProperty : VariableByteIntegerProperty
|
||||
{
|
||||
public SubscriptionIdentifierProperty(uint value)
|
||||
: base((byte)PropertyID.SubscriptionIdentifier, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using MQTTnet.Packets.Properties.BaseTypes;
|
||||
|
||||
namespace MQTTnet.Packets.Properties
|
||||
{
|
||||
public class WillDelayIntervalProperty : FourByteIntegerValue
|
||||
{
|
||||
public WillDelayIntervalProperty(uint value)
|
||||
: base((byte)PropertyID.WillDelayInterval, value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user