/// <summary> /// Publishes the given packet to the broker. /// </summary> /// <param name="packet">Packet.</param> private ushort Publish(PublishPacket packet) { packet.Validate(); if (packet.QosLevel != MqttQos.AtMostOnce) { if (packet.PacketId == 0) { packet.PacketId = this.GetNextPacketId(); } // persistence needed only on qos levels 1 and 2 Persistence.RegisterOutgoingFlow(new OutgoingFlow() { PacketId = packet.PacketId, Retain = packet.Retain, Topic = packet.Topic, Qos = packet.QosLevel, Payload = packet.Message }); } try { IsPublishing = true; Send(packet); return(packet.PacketId); } catch { IsPublishing = false; throw; } }
private ushort Publish(PublishPacket packet) { if (packet.QosLevel != MqttQos.AtMostOnce) { if (packet.PacketId == 0) { packet.PacketId = this.GetNextPacketId(); } Persistence.RegisterOutgoingFlow(new OutgoingFlow() { PacketId = packet.PacketId, Topic = packet.Topic, Qos = packet.QosLevel, Payload = packet.Message }); } try { IsPublishing = true; Send(packet); return(packet.PacketId); } catch { IsPublishing = false; throw; } }
private ushort Publish(PublishPacket packet) { if (packet.QosLevel != MqttQos.AtMostOnce) { if (packet.PacketId == 0) { packet.PacketId = GetNextPacketId(); } Persistence.RegisterOutgoingFlow(new OutgoingFlow { PacketId = packet.PacketId, Topic = packet.Topic, Qos = packet.QosLevel, Payload = packet.Message }); } Send(packet); return(packet.PacketId); }