Example #1
0
        public void Clear(Retain options = Retain.None)
        {
            if (options == Retain.None)
            {
                Orders.Clear();
            }
            else
            {
                var ordersToRemove = Orders.Where(item =>
                {
                    if (item.Value.Active)
                    {
                        if ((options & Retain.ActiveGTC) != 0 && item.Value.TimeInForce == TimeInForce.GoodTillCancel)
                        {
                            return(false);
                        }

                        if ((options & Retain.ActiveGTD) != 0 && item.Value.TimeInForce == TimeInForce.GoodTillDate)
                        {
                            return(false);
                        }
                    }

                    return(true);
                }).ToArray();

                foreach (var item in ordersToRemove)
                {
                    Orders.Remove(item.Key);
                }
            }

            Messages.Clear();
        }
Example #2
0
        /// <summary>
        /// 写入固定报头首字节
        /// </summary>
        /// <returns></returns>
        private void WriteFixedHeaderByte(IByteBuffer buf)
        {
            var ret = (byte)PacketType << 4;

            ret |= Dup.ToByte() << 3;
            ret |= (byte)Qos << 1;
            ret |= Retain.ToByte();
            buf.WriteByte(ret);
        }
Example #3
0
 private void SaveRetain(String topic, RetainMessage retainMessage, bool isClean)
 {
     Retain.TryGetValue(topic, out ConcurrentQueue <RetainMessage> retainMessages);
     if (!retainMessages.IsEmpty && isClean)
     {
         retainMessages.Clear();
     }
     retainMessages.Enqueue(retainMessage);
     Retain.AddOrUpdate(topic, retainMessages, (key, value) => retainMessages);
 }
Example #4
0
        public void WriteTo(Stream stream)
        {
            var flags = (byte)MessageType << 4;

            flags |= Dup.ToByte() << 3;
            flags |= (byte)Qos << 1;
            flags |= Retain.ToByte();

            stream.WriteByte((byte)flags);
            stream.Write(EncodeLength(RemaingLength));
        }
Example #5
0
        public void WriteTo(IByteBuffer buffer)
        {
            var flags = (byte)PacketType << 4;

            flags |= Dup.ToByte() << 3;
            flags |= (byte)Qos << 1;
            flags |= Retain.ToByte();

            buffer.WriteByte((byte)flags);
            buffer.WriteBytes(EncodeLength(RemaingLength));
        }
Example #6
0
 public async Task SendRetain(string topic, MqttChannel mqttChannel)
 {
     Retain.TryGetValue(topic, out ConcurrentQueue <RetainMessage> retainMessages);
     if (retainMessages != null && !retainMessages.IsEmpty)
     {
         var messages = retainMessages.GetEnumerator();
         while (messages.MoveNext())
         {
             var retainMessage = messages.Current;
             await SendMessage(mqttChannel, retainMessage.QoS, topic, retainMessage.ByteBuf);
         }
         ;
     }
 }
Example #7
0
 public async Task SendRetain(string topic, MqttChannel mqttChannel)
 {
     Retain.TryGetValue(topic, out ConcurrentQueue <RetainMessage> retainMessages);
     if (retainMessages != null && !retainMessages.IsEmpty)
     {
         var count = retainMessages.Count;
         for (int i = 0; i < count; i++)
         {
             if (retainMessages.TryDequeue(out RetainMessage retainMessage))
             {
                 await SendMessage(mqttChannel, retainMessage.QoS, topic, retainMessage.ByteBuf);
             }
         }
     }
 }
Example #8
0
        /// <summary>
        /// Adds the options to the list.
        /// </summary>
        public void AddToOptionList(OptionList options, bool clearList = true)
        {
            if (clearList)
            {
                options.Clear();
            }

            options["RootTopic"]      = RootTopic;
            options["UndefinedValue"] = UndefinedValue;
            options["PublishFormat"]  = PublishFormat;
            options["QosLevel"]       = QosLevel.ToString();
            options["Retain"]         = Retain.ToString();
            options["MaxQueueSize"]   = MaxQueueSize.ToString();
            options["DataLifetime"]   = DataLifetime.ToString();
            options["DetailedLog"]    = DetailedLog.ToString();
            options["DeviceFilter"]   = DeviceFilter.ToRangeString();
        }
Example #9
0
        public override int GetHashCode()
        {
            var hashCode = QualityOfService.GetHashCode() +
                           Duplicated.GetHashCode() +
                           Retain.GetHashCode() +
                           Topic.GetHashCode();

            if (Payload != null)
            {
                hashCode += BitConverter.ToString(Payload).GetHashCode();
            }

            if (PacketId.HasValue)
            {
                hashCode += PacketId.Value.GetHashCode();
            }

            return(hashCode);
        }