Beispiel #1
0
 ///<summary>
 ///thread-safe,  Will await if the low priority queue is too full
 ///</summary>
 public async Task <bool> SendLowPriorityDataPacketAsync(BbTcpPacket packet, CancellationToken cancel)
 {
     MemoryStream[] aData = packet.WritePacket();
     if (aData != null)
     {
         foreach (MemoryStream data in aData)
         {
             await m_sendQueue.SendAsync(data, cancel);
         }
         if (packet.IsExpectingAnswer())
         {
             lock (m_liExpectedAnswers)
             {
                 m_liExpectedAnswers.Add(packet);
             }
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
Beispiel #2
0
        ///<summary>
        ///thread-safe, instantly returns
        ///</summary>
        public bool SendPacket(BbTcpPacket packet)
        {
            MemoryStream[] aData = packet.WritePacket();
            if (aData != null)
            {
                foreach (MemoryStream data in aData)
                {
                    m_prioritySendQueue.Post(data);
                }
                if (packet.IsExpectingAnswer())
                {
                    lock (m_liExpectedAnswers)
                    {
                        m_liExpectedAnswers.Add(packet);
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }