public MqttClientPublishResult CreatePublishResult(MqttPubAckPacket pubAckPacket) { return(new MqttClientPublishResult { PacketIdentifier = pubAckPacket?.PacketIdentifier, ReasonCode = MqttClientPublishReasonCode.Success }); }
public void DeserializeV311_MqttPubAckPacket() { var p = new MqttPubAckPacket { PacketIdentifier = 123 }; DeserializeAndCompare(p, "QAIAew=="); }
private async Task HandleIncomingPublishPacketWithQoS1(IMqttChannelAdapter adapter, MqttApplicationMessage applicationMessage, MqttPublishPacket publishPacket, CancellationToken cancellationToken) { await _sessionsManager.DispatchApplicationMessageAsync(this, applicationMessage).ConfigureAwait(false); var response = new MqttPubAckPacket { PacketIdentifier = publishPacket.PacketIdentifier }; await adapter.SendPacketsAsync(_options.DefaultCommunicationTimeout, cancellationToken, response).ConfigureAwait(false); }
private Task SerializeAsync(MqttPubAckPacket packet, IMqttCommunicationChannel destination) { using (var output = new MqttPacketWriter()) { output.Write(packet.PacketIdentifier); output.InjectFixedHeader(MqttControlPacketType.PubAck); return(output.WriteToAsync(destination)); } }
static byte EncodePubAckPacket(MqttPubAckPacket packet, MqttBufferWriter bufferWriter) { if (packet.PacketIdentifier == 0) { throw new MqttProtocolViolationException("PubAck packet has no packet identifier."); } bufferWriter.WriteTwoByteInteger(packet.PacketIdentifier); return(MqttBufferWriter.BuildFixedHeader(MqttControlPacketType.PubAck)); }
static byte EncodePubAckPacket(MqttPubAckPacket packet, IMqttPacketWriter packetWriter) { if (!packet.PacketIdentifier.HasValue) { throw new MqttProtocolViolationException("PubAck packet has no packet identifier."); } packetWriter.Write(packet.PacketIdentifier.Value); return(MqttPacketWriter.BuildFixedHeader(MqttControlPacketType.PubAck)); }
Task HandleIncomingPubAckPacket(MqttPubAckPacket pubAckPacket) { var acknowledgedPublishPacket = Session.AcknowledgePublishPacket(pubAckPacket.PacketIdentifier); if (acknowledgedPublishPacket != null) { return(ClientAcknowledgedPublishPacket(acknowledgedPublishPacket, pubAckPacket)); } return(PlatformAbstractionLayer.CompletedTask); }
private void HandleIncomingPublishPacketWithQoS1( IMqttChannelAdapter adapter, MqttPublishPacket publishPacket, CancellationToken cancellationToken) { _sessionsManager.EnqueueApplicationMessage(this, publishPacket); var response = new MqttPubAckPacket { PacketIdentifier = publishPacket.PacketIdentifier }; adapter.SendPacketAsync(response, cancellationToken).GetAwaiter().GetResult(); }
static MqttPubAckPacket Create(MqttPublishPacket publishPacket, MqttApplicationMessageReceivedReasonCode applicationMessageReceivedReasonCode) { if (publishPacket == null) { throw new ArgumentNullException(nameof(publishPacket)); } var pubAckPacket = new MqttPubAckPacket { PacketIdentifier = publishPacket.PacketIdentifier, ReasonCode = (MqttPubAckReasonCode)(int)applicationMessageReceivedReasonCode }; return(pubAckPacket); }
private static MqttBasePacket DecodePubAckPacket(IMqttPacketBodyReader body) { ThrowIfBodyIsEmpty(body); var packet = new MqttPubAckPacket { PacketIdentifier = body.ReadTwoByteInteger() }; if (body.EndOfStream) { packet.ReasonCode = MqttPubAckReasonCode.Success; return(packet); } packet.ReasonCode = (MqttPubAckReasonCode)body.ReadByte(); var propertiesReader = new MqttV500PropertiesReader(body); while (propertiesReader.MoveNext()) { if (packet.Properties == null) { packet.Properties = new MqttPubAckPacketProperties(); } if (propertiesReader.CurrentPropertyId == MqttPropertyId.ReasonString) { packet.Properties.ReasonString = propertiesReader.ReadReasonString(); } else if (propertiesReader.CurrentPropertyId == MqttPropertyId.UserProperty) { if (packet.Properties.UserProperties == null) { packet.Properties.UserProperties = new List <MqttUserProperty>(); } propertiesReader.AddUserPropertyTo(packet.Properties.UserProperties); } else { propertiesReader.ThrowInvalidPropertyIdException(typeof(MqttPubAckPacket)); } } return(packet); }
public MqttClientPublishResult Create(MqttPubAckPacket pubAckPacket) { // QoS 0 has no response. So we treat it as a success always. if (pubAckPacket == null) { return(EmptySuccessResult); } var result = new MqttClientPublishResult { // Both enums have the same values. So it can be easily converted. ReasonCode = (MqttClientPublishReasonCode)(int)pubAckPacket.ReasonCode, PacketIdentifier = pubAckPacket.PacketIdentifier, ReasonString = pubAckPacket.ReasonString, UserProperties = pubAckPacket.UserProperties ?? EmptyUserProperties }; return(result); }
public MqttClientPublishResult CreatePublishResult(MqttPubAckPacket pubAckPacket) { var result = new MqttClientPublishResult { ReasonCode = MqttClientPublishReasonCode.Success, ReasonString = pubAckPacket?.Properties?.ReasonString, UserProperties = pubAckPacket?.Properties?.UserProperties }; if (pubAckPacket != null) { // QoS 0 has no response. So we treat it as a success always. // Both enums have the same values. So it can be easily converted. result.ReasonCode = (MqttClientPublishReasonCode)pubAckPacket.ReasonCode; result.PacketIdentifier = pubAckPacket.PacketIdentifier; } return(result); }
public void Serialize_Full_MqttPubAckPacket_V311() { var pubAckPacket = new MqttPubAckPacket { PacketIdentifier = 123, ReasonCode = MqttPubAckReasonCode.NoMatchingSubscribers, ReasonString = "ReasonString", UserProperties = new List <MqttUserProperty> { new MqttUserProperty("Foo", "Bar") } }; var deserialized = MqttPacketSerializationHelper.EncodeAndDecodePacket(pubAckPacket, MqttProtocolVersion.V311); Assert.AreEqual(pubAckPacket.PacketIdentifier, deserialized.PacketIdentifier); Assert.AreEqual(MqttPubAckReasonCode.Success, deserialized.ReasonCode); // Not supported in v3.1.1 Assert.AreEqual(null, deserialized.ReasonString); // Not supported in v3.1.1 CollectionAssert.AreEqual(null, deserialized.UserProperties); }
byte EncodePubAckPacket(MqttPubAckPacket packet) { if (packet.PacketIdentifier == 0) { throw new MqttProtocolViolationException("PubAck packet has no packet identifier."); } _bufferWriter.WriteTwoByteInteger(packet.PacketIdentifier); _propertiesWriter.WriteReasonString(packet.ReasonString); _propertiesWriter.WriteUserProperties(packet.UserProperties); if (_bufferWriter.Length > 0 || packet.ReasonCode != MqttPubAckReasonCode.Success) { _bufferWriter.WriteByte((byte)packet.ReasonCode); _propertiesWriter.WriteTo(_bufferWriter); _propertiesWriter.Reset(); } return(MqttBufferWriter.BuildFixedHeader(MqttControlPacketType.PubAck)); }
private static byte EncodePubAckPacket(MqttPubAckPacket packet, IMqttPacketWriter packetWriter) { if (packet == null) { throw new ArgumentNullException(nameof(packet)); } if (packetWriter == null) { throw new ArgumentNullException(nameof(packetWriter)); } if (!packet.PacketIdentifier.HasValue) { throw new MqttProtocolViolationException("PubAck packet has no packet identifier."); } if (!packet.ReasonCode.HasValue) { throw new MqttProtocolViolationException("PubAck packet must contain a reason code."); } packetWriter.Write(packet.PacketIdentifier.Value); var propertiesWriter = new MqttV500PropertiesWriter(); if (packet.Properties != null) { propertiesWriter.WriteReasonString(packet.Properties.ReasonString); propertiesWriter.WriteUserProperties(packet.Properties.UserProperties); } if (packetWriter.Length > 0 || packet.ReasonCode.Value != MqttPubAckReasonCode.Success) { packetWriter.Write((byte)packet.ReasonCode.Value); propertiesWriter.WriteTo(packetWriter); } return(MqttPacketWriter.BuildFixedHeader(MqttControlPacketType.PubAck)); }
public MqttPubAckPacket Create(MqttPublishPacket publishPacket, InterceptingPublishEventArgs interceptingPublishEventArgs) { if (publishPacket == null) { throw new ArgumentNullException(nameof(publishPacket)); } var pubAckPacket = new MqttPubAckPacket { PacketIdentifier = publishPacket.PacketIdentifier, ReasonCode = MqttPubAckReasonCode.Success }; if (interceptingPublishEventArgs != null) { pubAckPacket.ReasonCode = (MqttPubAckReasonCode)(int)interceptingPublishEventArgs.Response.ReasonCode; pubAckPacket.ReasonString = interceptingPublishEventArgs.Response.ReasonString; pubAckPacket.UserProperties = interceptingPublishEventArgs.Response.UserProperties; } return(pubAckPacket); }
MqttPacket DecodePubAckPacket(ArraySegment <byte> body) { ThrowIfBodyIsEmpty(body); _bufferReader.SetBuffer(body.Array, body.Offset, body.Count); var packet = new MqttPubAckPacket { PacketIdentifier = _bufferReader.ReadTwoByteInteger() }; if (_bufferReader.EndOfStream) { packet.ReasonCode = MqttPubAckReasonCode.Success; return(packet); } packet.ReasonCode = (MqttPubAckReasonCode)_bufferReader.ReadByte(); var propertiesReader = new MqttV5PropertiesReader(_bufferReader); while (propertiesReader.MoveNext()) { if (propertiesReader.CurrentPropertyId == MqttPropertyId.ReasonString) { packet.ReasonString = propertiesReader.ReadReasonString(); } else { propertiesReader.ThrowInvalidPropertyIdException(typeof(MqttPubAckPacket)); } } packet.UserProperties = propertiesReader.CollectedUserProperties; return(packet); }
private async Task HandleIncomingPubAckPacketAsync(MqttPubAckPacket pubAckPacket) { await Task.FromResult((object)null); }
private static byte Serialize(MqttPubAckPacket packet, MqttPacketWriter writer) { writer.Write(packet.PacketIdentifier); return(MqttPacketWriter.BuildFixedHeader(MqttControlPacketType.PubAck)); }