コード例 #1
0
        public SendMqttMessage GetMqttMessage(int messageId)
        {
            SendMqttMessage mqttMessage = null;

            Messages.TryGetValue(messageId, out mqttMessage);
            return(mqttMessage);
        }
コード例 #2
0
        private void PubRecAck(SendMqttMessage mqttMessage)
        {
            PubRecPacket mqttPubAckMessage = new PubRecPacket()
            {
                PacketId = mqttMessage.MessageId,
            };

            mqttMessage.Channel.WriteAndFlushAsync(mqttPubAckMessage);
        }
コード例 #3
0
        protected void PubRelAck(SendMqttMessage mqttMessage)
        {
            PubRelPacket mqttPubAckMessage = new PubRelPacket()
            {
                PacketId = mqttMessage.MessageId,
            };

            mqttMessage.Channel.WriteAndFlushAsync(mqttPubAckMessage);
        }
コード例 #4
0
        private void PubMessage(IChannel channel, SendMqttMessage mqttMessage)
        {
            PublishPacket mqttPublishMessage = new PublishPacket((QualityOfService)mqttMessage.Qos, true, mqttMessage.Retain)
            {
                TopicName = mqttMessage.Topic,
                PacketId  = mqttMessage.MessageId,
                Payload   = Unpooled.WrappedBuffer(mqttMessage.ByteBuf)
            };

            channel.WriteAndFlushAsync(mqttPublishMessage);
        }
コード例 #5
0
        private SendMqttMessage Enqueue(IChannel channel, int messageId, String topic, byte[] datas, int mqttQoS, ConfirmStatus confirmStatus)
        {
            var message = new SendMqttMessage
            {
                ByteBuf       = datas,
                Channel       = channel,
                MessageId     = messageId,
                Qos           = mqttQoS,
                Time          = DateTime.Now.Ticks / 10000,
                ConfirmStatus = confirmStatus,
                Topic         = topic
            };

            _scanRunnable.Enqueue(message);
            return(message);
        }
コード例 #6
0
        public override void Execute(SendMqttMessage poll)
        {
            if (CheckTime(poll.Time) && poll.Channel.Active)
            {
                poll.Time = DateTime.Now.Ticks / 10000;
                switch (poll.ConfirmStatus)
                {
                case ConfirmStatus.PUB:
                    PubMessage(poll.Channel, poll);
                    break;

                case ConfirmStatus.PUBREL:
                    PubRelAck(poll);
                    break;

                case ConfirmStatus.PUBREC:
                    PubRecAck(poll);
                    break;
                }
            }
        }
コード例 #7
0
        public void RemoveMqttMessage(int messageId)
        {
            SendMqttMessage mqttMessage = null;

            Messages.Remove(messageId, out mqttMessage);
        }
コード例 #8
0
 public void AddMqttMessage(int messageId, SendMqttMessage msg)
 {
     Messages.AddOrUpdate(messageId, msg, (id, message) => msg);
 }
コード例 #9
0
 public void Enqueue(SendMqttMessage t)
 {
     _queue.Enqueue(t);
 }
コード例 #10
0
 /// <summary>
 /// Executes the specified poll.
 /// </summary>
 /// <param name="poll">The poll.</param>
 public abstract void Execute(SendMqttMessage poll);