bool TryDequeueMessage(PacketWithId packet, out TAckState message) { TAckState firstRequest = this.FirstRequestPendingAck; if (firstRequest == null) { CommonEventSource.Log.Warning($"{packet.PacketType.ToString()} #{packet.PacketId.ToString()} was received while not expected.", this.identityProvider.ChannelId, this.identityProvider.Id); message = default(TAckState); return(false); } if (packet.PacketId != firstRequest.PacketId) { CommonEventSource.Log.Warning($"{packet.PacketType.ToString()} #{packet.PacketId.ToString()} was received while #{firstRequest.PacketId.ToString()} was expected.", this.identityProvider.ChannelId, this.identityProvider.Id); message = default(TAckState); return(false); } TAckState dequeued = this.pendingAckQueue.Dequeue(); Contract.Assert(ReferenceEquals(dequeued, firstRequest)); message = firstRequest; return(true); }
bool TryDequeueMessage(PacketWithId packet, out TAckState message, string scope) { TAckState firstRequest = this.FirstRequestPendingAck; if (firstRequest == null) { CommonEventSource.Log.Warning($"{packet.PacketType.ToString()} #{packet.PacketId.ToString()} was received while not expected.", scope); message = default(TAckState); return(false); } if (packet.PacketId != firstRequest.PacketId) { CommonEventSource.Log.Warning($"{packet.PacketType.ToString()} #{packet.PacketId.ToString()} was received while #{firstRequest.PacketId.ToString()} was expected.", scope); message = default(TAckState); return(false); } TAckState dequeued = this.pendingAckQueue.Dequeue(); Contract.Assert(ReferenceEquals(dequeued, firstRequest)); if (this.pendingAckQueue.Count == 0) { this.Retransmitting = false; } message = firstRequest; return(true); }
static void DecodePacketIdVariableHeader(DataReader reader, PacketWithId packet, ref uint remainingLength) { int packetId = packet.PacketId = DecodeUnsignedShort(reader, ref remainingLength); if (packetId == 0) { throw new DecoderException("[MQTT-2.3.1-1]"); } }
static void DecodePacketIdVariableHeader(IByteBuffer buffer, PacketWithId packet, ref int remainingLength) { int packetId = packet.PacketId = DecodeUnsignedShort(buffer, ref remainingLength); if (0u >= (uint)packetId) { ThrowHelper.ThrowDecoderException_MQTT_231_1(); } }
public bool CheckServerAndDevicePayload(PacketWithId packet, Device device) { if (GetServerPayloadSignature(packet.randomPayload) == packet.serverSignature && GetDevicePayloadSignature(packet.randomPayload, device) == packet.deviceSignature) { return(true); } return(false); }
static void DecodePacketIdVariableHeader(Packet buffer, PacketWithId packet, ref Int32 remainingLength) { var packetId = packet.PacketId = DecodeUnsignedShort(buffer, ref remainingLength); if (packetId == 0) { throw new DecoderException("[MQTT-2.3.1-1]"); } }
static void EncodePacketWithIdOnly(PacketWithId packet, DataWriter writer) { var msgId = packet.PacketId; const uint VariableHeaderBufferSize = PACKET_ID_LENGTH; // variable part only has a packet id writer.WriteByte(CalculateFirstByteOfFixedHeader(packet)); WriteVariableLengthInt(writer, VariableHeaderBufferSize); writer.WriteUInt16(msgId); }
static void EncodePacketWithIdOnly(IByteBufferAllocator bufferAllocator, PacketWithId packet, List <object> output) { int msgId = packet.PacketId; const int VariableHeaderBufferSize = PacketIdLength; // variable part only has a packet id int fixedHeaderBufferSize = 1 + MaxVariableLength; IByteBuffer buffer = bufferAllocator.Buffer(fixedHeaderBufferSize + VariableHeaderBufferSize); buffer.WriteByte(CalculateFirstByteOfFixedHeader(packet)); WriteVariableLengthInt(buffer, VariableHeaderBufferSize); buffer.WriteShort(msgId); output.Add(buffer); }
protected override Task ProcessAsync(IChannelHandlerContext context, PacketWithId packet) { TAckState message; if (this.TryDequeueMessage(packet, out message)) { return(this.processAckFunc(context, message)); } else if (this.abortOnOutOfOrderAck) { return(TaskEx.FromException(new ProtocolGatewayException(ErrorCode.InvalidPubAckOrder, "Client MUST send PUBACK packets in the order in which the corresponding PUBLISH packets were received"))); } return(TaskEx.Completed); }
bool TryDequeueMessage(PacketWithId packet, out TAckState message) { TAckState firstRequest = this.FirstRequestPendingAck; if (firstRequest == null) { if (MqttIotHubAdapterEventSource.Log.IsWarningEnabled) { MqttIotHubAdapterEventSource.Log.Warning(string.Format("{0} #{1} was received while not expected.", packet.PacketType, packet.PacketId)); } message = default(TAckState); return(false); } if (packet.PacketId != firstRequest.PacketId) { if (MqttIotHubAdapterEventSource.Log.IsWarningEnabled) { MqttIotHubAdapterEventSource.Log.Warning(string.Format("{0} #{1} was received while #{2} was expected.", packet.PacketType, packet.PacketId, firstRequest.PacketId)); } message = default(TAckState); return(false); } TAckState dequeued = this.pendingAckQueue.Dequeue(); Contract.Assert(ReferenceEquals(dequeued, firstRequest)); if (this.pendingAckQueue.Count == 0) { this.Retransmitting = false; } message = firstRequest; return(true); }
static void EncodePacketWithIdOnly(IByteBufferAllocator bufferAllocator, PacketWithId packet, List <object> output) { int msgId = packet.PacketId; const int VariableHeaderBufferSize = PACKET_ID_LENGTH; // variable part only has a packet id int fixedHeaderBufferSize = 1 + MAX_VARIABLE_LENGTH; IByteBuffer buffer = null; try { buffer = bufferAllocator.Buffer(fixedHeaderBufferSize + VariableHeaderBufferSize); buffer.WriteByte(CalculateFirstByteOfFixedHeader(packet)); WriteVariableLengthInt(buffer, VariableHeaderBufferSize); buffer.WriteShort(msgId); output.Add(buffer); buffer = null; } finally { buffer?.SafeRelease(); } }
static void EncodePacketWithIdOnly(IByteBufferAllocator bufferAllocator, PacketWithId packet, List <Object> output) { var msgId = packet.PacketId; const Int32 VariableHeaderBufferSize = PacketIdLength; // variable part only has a packet id var fixedHeaderBufferSize = 1 + MaxVariableLength; Packet buffer = null; try { buffer = bufferAllocator.Buffer(fixedHeaderBufferSize + VariableHeaderBufferSize); buffer.WriteByte(CalculateFirstByteOfFixedHeader(packet)); WriteVariableLengthInt(buffer, VariableHeaderBufferSize); buffer.WriteShort(msgId); output.Add(buffer); buffer = null; } finally { buffer?.SafeRelease(); } }
protected override Task ProcessAsync(IChannelHandlerContext context, PacketWithId packet) { TAckState message; return(this.TryDequeueMessage(packet, out message) ? this.processAckFunc(context, message) : TaskEx.Completed); }
static void DecodePacketIdVariableHeader(IByteBuffer buffer, PacketWithId packet, ref int remainingLength) { packet.PacketId = DecodeUnsignedShort(buffer, ref remainingLength); }