mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-25 15:42:57 +08:00
Add more handling options to interceptor contexts.
This commit is contained in:
@@ -15,7 +15,7 @@ namespace MQTTnet.AspNetCore.Tests
|
||||
{
|
||||
var serializer = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311);
|
||||
|
||||
var buffer = serializer.Encode(new MqttPublishPacket() {Topic = "a", Payload = new byte[5]});
|
||||
var buffer = serializer.Encode(new MqttPublishPacket {Topic = "a", Payload = new byte[5]}).ToArray();
|
||||
|
||||
var sequence = new ReadOnlySequence<byte>(buffer.Array, buffer.Offset, buffer.Count);
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace MQTTnet.Benchmarks
|
||||
|
||||
var serializer = new MqttPacketFormatterAdapter(MqttProtocolVersion.V311);
|
||||
|
||||
var serializedPacket = Join(serializer.Encode(_packet));
|
||||
var serializedPacket = Join(serializer.Encode(_packet).ToArray());
|
||||
|
||||
_iterations = 10000;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace MQTTnet.Benchmarks
|
||||
};
|
||||
|
||||
_serializer = new MqttV311PacketFormatter(new MqttPacketWriter());
|
||||
_serializedPacket = _serializer.Encode(_packet);
|
||||
_serializedPacket = _serializer.Encode(_packet).ToArray();
|
||||
}
|
||||
|
||||
[Benchmark]
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace MQTTnet.Tests.Client
|
||||
await lowLevelClient.DisconnectAsync(CancellationToken.None).ConfigureAwait(false);
|
||||
|
||||
Assert.IsNotNull(receivedPacket);
|
||||
Assert.AreEqual(MqttSubscribeReturnCode.SuccessMaximumQoS0, receivedPacket.ReturnCodes[0]);
|
||||
Assert.AreEqual(MqttSubscribeReasonCode.GrantedQoS0, receivedPacket.ReasonCodes[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,18 +36,36 @@ namespace MQTTnet.Tests.Mockups
|
||||
set => Implementation.ConnectedHandler = value;
|
||||
}
|
||||
|
||||
public event Func<MqttClientConnectedEventArgs, Task> ConnectedAsync
|
||||
{
|
||||
add => Implementation.ConnectedAsync += value;
|
||||
remove => Implementation.ConnectedAsync -= value;
|
||||
}
|
||||
|
||||
public IMqttClientDisconnectedHandler DisconnectedHandler
|
||||
{
|
||||
get => Implementation.DisconnectedHandler;
|
||||
set => Implementation.DisconnectedHandler = value;
|
||||
}
|
||||
|
||||
public event Func<MqttClientDisconnectedEventArgs, Task> DisconnectedAsync
|
||||
{
|
||||
add => Implementation.DisconnectedAsync += value;
|
||||
remove => Implementation.DisconnectedAsync -= value;
|
||||
}
|
||||
|
||||
public IMqttApplicationMessageReceivedHandler ApplicationMessageReceivedHandler
|
||||
{
|
||||
get => Implementation.ApplicationMessageReceivedHandler;
|
||||
set => Implementation.ApplicationMessageReceivedHandler = value;
|
||||
}
|
||||
|
||||
public event Func<MqttApplicationMessageReceivedEventArgs, Task> ApplicationMessageReceivedAsync
|
||||
{
|
||||
add => Implementation.ApplicationMessageReceivedAsync += value;
|
||||
remove => Implementation.ApplicationMessageReceivedAsync -= value;
|
||||
}
|
||||
|
||||
public Task<MqttClientConnectResult> ConnectAsync(IMqttClientOptions options, CancellationToken cancellationToken)
|
||||
{
|
||||
if (TestContext != null)
|
||||
|
||||
@@ -69,6 +69,12 @@ namespace MQTTnet.Tests.Mockups
|
||||
set => Implementation.ApplicationMessageReceivedHandler = value;
|
||||
}
|
||||
|
||||
public event Func<MqttApplicationMessageReceivedEventArgs, Task> ApplicationMessageReceivedAsync
|
||||
{
|
||||
add => Implementation.ApplicationMessageReceivedAsync += value;
|
||||
remove => Implementation.ApplicationMessageReceivedAsync -= value;
|
||||
}
|
||||
|
||||
public Task ClearRetainedApplicationMessagesAsync()
|
||||
{
|
||||
return Implementation.ClearRetainedApplicationMessagesAsync();
|
||||
|
||||
@@ -513,10 +513,10 @@ namespace MQTTnet.Tests
|
||||
PacketIdentifier = 123
|
||||
};
|
||||
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.SuccessMaximumQoS0);
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.SuccessMaximumQoS1);
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.SuccessMaximumQoS2);
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.Failure);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.GrantedQoS0);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.GrantedQoS1);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.GrantedQoS2);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.UnspecifiedError);
|
||||
|
||||
SerializeAndCompare(p, "kAYAewABAoA=");
|
||||
}
|
||||
@@ -529,10 +529,10 @@ namespace MQTTnet.Tests
|
||||
PacketIdentifier = 123
|
||||
};
|
||||
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.SuccessMaximumQoS0);
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.SuccessMaximumQoS1);
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.SuccessMaximumQoS2);
|
||||
p.ReturnCodes.Add(MqttSubscribeReturnCode.Failure);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.GrantedQoS0);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.GrantedQoS1);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.GrantedQoS2);
|
||||
p.ReasonCodes.Add(MqttSubscribeReasonCode.UnspecifiedError);
|
||||
|
||||
DeserializeAndCompare(p, "kAYAewABAoA=");
|
||||
}
|
||||
@@ -596,7 +596,7 @@ namespace MQTTnet.Tests
|
||||
|
||||
byte[] Serialize(MqttBasePacket packet, MqttProtocolVersion protocolVersion)
|
||||
{
|
||||
return MqttPacketFormatterAdapter.GetMqttPacketFormatter(protocolVersion, WriterFactory()).Encode(packet).ToArray();
|
||||
return MqttPacketFormatterAdapter.GetMqttPacketFormatter(protocolVersion, WriterFactory()).Encode(packet).ToArray().ToArray();
|
||||
}
|
||||
|
||||
protected virtual IMqttPacketWriter WriterFactory()
|
||||
@@ -616,7 +616,7 @@ namespace MQTTnet.Tests
|
||||
var serializer = MqttPacketFormatterAdapter.GetMqttPacketFormatter(protocolVersion, writer);
|
||||
var buffer1 = serializer.Encode(packet);
|
||||
|
||||
using (var headerStream = new MemoryStream(buffer1.ToArray()))
|
||||
using (var headerStream = new MemoryStream(buffer1.ToArray().ToArray()))
|
||||
{
|
||||
var channel = new TestMqttChannel(headerStream);
|
||||
var adapter = new MqttChannelAdapter(channel, new MqttPacketFormatterAdapter(protocolVersion, writer), null, new MqttNetEventLogger());
|
||||
@@ -624,20 +624,7 @@ namespace MQTTnet.Tests
|
||||
|
||||
var buffer2 = serializer.Encode(receivedPacket);
|
||||
|
||||
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(buffer2.ToArray()));
|
||||
|
||||
//adapter.ReceivePacketAsync(CancellationToken.None);
|
||||
//var fixedHeader = new byte[2];
|
||||
//var header = new MqttPacketReader(channel).ReadFixedHeaderAsync(fixedHeader, CancellationToken.None).GetAwaiter().GetResult().FixedHeader;
|
||||
|
||||
//using (var bodyStream = new MemoryStream(Join(buffer1), (int)headerStream.Position, header.RemainingLength))
|
||||
//{
|
||||
// var reader = ReaderFactory(bodyStream.ToArray());
|
||||
// var deserializedPacket = serializer.Decode(new ReceivedMqttPacket(header.Flags, reader, 0));
|
||||
// var buffer2 = serializer.Encode(deserializedPacket);
|
||||
|
||||
// Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(buffer2)));
|
||||
//}
|
||||
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(buffer2.ToArray().ToArray()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -648,26 +635,9 @@ namespace MQTTnet.Tests
|
||||
var serializer = MqttPacketFormatterAdapter.GetMqttPacketFormatter(protocolVersion, writer);
|
||||
var buffer = serializer.Encode(packet);
|
||||
|
||||
var channel = new TestMqttChannel(buffer.ToArray());
|
||||
var channel = new TestMqttChannel(buffer.ToArray().ToArray());
|
||||
var adapter = new MqttChannelAdapter(channel, new MqttPacketFormatterAdapter(protocolVersion, writer), null, new MqttNetEventLogger());
|
||||
return (TPacket)adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
|
||||
|
||||
//using (var headerStream = new MemoryStream(buffer1.ToArray()))
|
||||
//{
|
||||
|
||||
|
||||
|
||||
|
||||
// //var fixedHeader = new byte[2];
|
||||
|
||||
// //var header = new MqttPacketReader(channel).ReadFixedHeaderAsync(fixedHeader, CancellationToken.None).GetAwaiter().GetResult().FixedHeader;
|
||||
|
||||
// //using (var bodyStream = new MemoryStream(Join(buffer1), (int)headerStream.Position, (int)header.RemainingLength))
|
||||
// //{
|
||||
// // var reader = ReaderFactory(bodyStream.ToArray());
|
||||
// // return (T)serializer.Decode(new ReceivedMqttPacket(header.Flags, reader, 0));
|
||||
// //}
|
||||
//}
|
||||
}
|
||||
|
||||
MqttProtocolVersion DeserializeAndDetectVersion(MqttPacketFormatterAdapter packetFormatterAdapter, byte[] buffer)
|
||||
@@ -677,24 +647,6 @@ namespace MQTTnet.Tests
|
||||
|
||||
adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
|
||||
return packetFormatterAdapter.ProtocolVersion;
|
||||
|
||||
//using (var headerStream = new MemoryStream(buffer))
|
||||
//{
|
||||
|
||||
|
||||
|
||||
|
||||
// //var fixedHeader = new byte[2];
|
||||
// //var header = new MqttPacketReader(channel).ReadFixedHeaderAsync(fixedHeader, CancellationToken.None).GetAwaiter().GetResult().FixedHeader;
|
||||
|
||||
// //using (var bodyStream = new MemoryStream(buffer, (int)headerStream.Position, (int)header.RemainingLength))
|
||||
// //{
|
||||
// // var reader = ReaderFactory(bodyStream.ToArray());
|
||||
// // var packet = new ReceivedMqttPacket(header.Flags, reader, 0);
|
||||
// // packetFormatterAdapter.DetectProtocolVersion(packet);
|
||||
// // return adapter.ProtocolVersion;
|
||||
// //}
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -878,7 +878,7 @@ namespace MQTTnet.Tests.Server
|
||||
// This should lead to no subscriptions for "n" at all. So also no sending of retained messages.
|
||||
if (c.TopicFilter.Topic == "n")
|
||||
{
|
||||
c.ReasonCode = MqttSubscribeReasonCode.UnspecifiedError;
|
||||
c.Response.ReasonCode = MqttSubscribeReasonCode.UnspecifiedError;
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace MQTTnet.Tests.Server
|
||||
{
|
||||
if (context.SessionItems["can_subscribe_x"] as bool? == false)
|
||||
{
|
||||
context.ReasonCode = MqttSubscribeReasonCode.ImplementationSpecificError;
|
||||
context.Response.ReasonCode = MqttSubscribeReasonCode.ImplementationSpecificError;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -265,7 +265,7 @@ namespace MQTTnet.Tests.Server
|
||||
{
|
||||
if (c.TopicFilter.Topic == "not_allowed_topic")
|
||||
{
|
||||
c.ReasonCode = MqttSubscribeReasonCode.TopicFilterInvalid;
|
||||
c.Response.ReasonCode = MqttSubscribeReasonCode.TopicFilterInvalid;
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
@@ -73,12 +73,12 @@ namespace MQTTnet.TestApp.NetCore
|
||||
{
|
||||
if (context.TopicFilter.Topic.StartsWith("admin/foo/bar") && context.ClientId != "theAdmin")
|
||||
{
|
||||
context.ReasonCode = MqttSubscribeReasonCode.ImplementationSpecificError;
|
||||
context.Response.ReasonCode = MqttSubscribeReasonCode.ImplementationSpecificError;
|
||||
}
|
||||
|
||||
if (context.TopicFilter.Topic.StartsWith("the/secret/stuff") && context.ClientId != "Imperator")
|
||||
{
|
||||
context.ReasonCode = MqttSubscribeReasonCode.ImplementationSpecificError;
|
||||
context.Response.ReasonCode = MqttSubscribeReasonCode.ImplementationSpecificError;
|
||||
context.CloseConnection = true;
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user