diff --git a/Frameworks/MQTTnet.AspnetCore/MqttConnectionContext.cs b/Frameworks/MQTTnet.AspnetCore/MqttConnectionContext.cs index 7683fd01..88bfcc91 100644 --- a/Frameworks/MQTTnet.AspnetCore/MqttConnectionContext.cs +++ b/Frameworks/MQTTnet.AspnetCore/MqttConnectionContext.cs @@ -97,46 +97,12 @@ namespace MQTTnet.AspNetCore { foreach (var packet in packets) { - await WriteAsync(packet); + var buffer = PacketSerializer.Serialize(packet); + await Connection.Transport.Output.WriteAsync(buffer.AsMemory()); } } - - public async Task WriteAsync(MqttBasePacket packet) - { - var buffer = PacketSerializer.Serialize(packet); - await Connection.Transport.Output.WriteAsync(buffer.AsMemory()); - } - - private int messageId; - + public event EventHandler ReadingPacketStarted; public event EventHandler ReadingPacketCompleted; - - public Task PublishAsync(MqttPublishPacket packet) - { - if (!packet.PacketIdentifier.HasValue && packet.QualityOfServiceLevel > MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce) - { - packet.PacketIdentifier = (ushort)Interlocked.Increment(ref messageId); - } - return WriteAsync(packet); - } - - public Task SubscribeAsync(MqttSubscribePacket packet) - { - if (!packet.PacketIdentifier.HasValue) - { - packet.PacketIdentifier = (ushort)Interlocked.Increment(ref messageId); - } - return WriteAsync(packet); - } - - public Task ConnectAsync(MqttConnectPacket packet) - { - if (string.IsNullOrEmpty(packet.ClientId)) - { - packet.ClientId = Guid.NewGuid().ToString(); - } - return WriteAsync(packet); - } } } diff --git a/Frameworks/MQTTnet.AspnetCore/ReaderExtensions.cs b/Frameworks/MQTTnet.AspnetCore/ReaderExtensions.cs index 718538b1..5b832539 100644 --- a/Frameworks/MQTTnet.AspnetCore/ReaderExtensions.cs +++ b/Frameworks/MQTTnet.AspnetCore/ReaderExtensions.cs @@ -4,7 +4,6 @@ using System.IO; using MQTTnet.Adapter; using MQTTnet.Exceptions; using MQTTnet.Packets; -using MQTTnet.Protocol; using MQTTnet.Serializer; namespace MQTTnet.AspNetCore @@ -59,30 +58,6 @@ namespace MQTTnet.AspNetCore return input.ToArray(); } - public static bool TryDeserialize(this IMqttPacketSerializer serializer, ref ReadOnlySequence input, out MqttBasePacket packet) - { - packet = null; - var copy = input; - if (copy.Length < 2) - { - return false; - } - - var fixedheader = copy.First.Span[0]; - if (!TryReadBodyLength(ref copy, out var bodyLength)) - { - return false; - } - - input = copy.Slice(bodyLength); - var bodySlice = copy.Slice(0, bodyLength); - using (var body = new MemoryStream(bodySlice.GetArray())) - { - packet = serializer.Deserialize(new ReceivedMqttPacket(fixedheader, body)); - return true; - } - } - public static bool TryDeserialize(this IMqttPacketSerializer serializer, in ReadOnlySequence input, out MqttBasePacket packet, out SequencePosition consumed, out SequencePosition observed) { packet = null; diff --git a/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs b/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs index 9d2a6762..fa061eb7 100644 --- a/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs +++ b/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs @@ -30,11 +30,19 @@ namespace MQTTnet.AspNetCore if (options.DefaultEndpointOptions.IsEnabled) { - services.AddSingleton(); - services.AddSingleton(s => s.GetService()); + services.AddSingleton(); + services.AddSingleton(s => s.GetService()); } return services; } + + public static IServiceCollection AddMqttConnectionHandler(this IServiceCollection services) + { + services.AddSingleton(); + services.AddSingleton(s => s.GetService()); + + return services; + } } } diff --git a/Tests/MQTTnet.TestApp.AspNetCore2/Startup.cs b/Tests/MQTTnet.TestApp.AspNetCore2/Startup.cs index 591cc87d..f52040a0 100644 --- a/Tests/MQTTnet.TestApp.AspNetCore2/Startup.cs +++ b/Tests/MQTTnet.TestApp.AspNetCore2/Startup.cs @@ -17,8 +17,12 @@ namespace MQTTnet.TestApp.AspNetCore2 public void ConfigureServices(IServiceCollection services) { - var mqttServerOptions = new MqttServerOptionsBuilder().Build(); - services.AddHostedMqttServer(mqttServerOptions); + var mqttServerOptions = new MqttServerOptionsBuilder() + .WithoutDefaultEndpoint() + .Build(); + services + .AddHostedMqttServer(mqttServerOptions) + .AddMqttConnectionHandler(); } // In class _Startup_ of the ASP.NET Core 2.0 project.