Esempio n. 1
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);
 }
Esempio n. 2
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);
         }
         ;
     }
 }
Esempio n. 3
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);
             }
         }
     }
 }