///<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); } }
///<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); } }