/// <summary> /// 出队操作 /// </summary> /// <param name="queueNum">队列号</param> /// <returns>返回队首元素</returns> static byte[] PopFromQueue(QueueNum queueNum) { switch (queueNum) { case QueueNum.PipeToTcp: lock (pipeToTcpBufferLocker) { if (pipeToTcpBuffer.Count < 1) { return(null); // 空队列 } return(pipeToTcpBuffer.Dequeue()); } case QueueNum.TcpToPipe: lock (tcpToPipeBufferLocker) { if (tcpToPipeBuffer.Count < 1) { return(null); // 空队列 } return(tcpToPipeBuffer.Dequeue()); } default: Logger.HistoryPrinting(Logger.Level.INFO, MethodBase.GetCurrentMethod().DeclaringType.FullName, "No such queue exists, number: " + ((byte)queueNum).ToString() + "."); return(null); } }
/// <summary> /// 入队操作 /// </summary> /// <param name="pushData">入队数据</param> /// <param name="queueNum">队列号</param> /// <param name="enforcedPush">强制入队</param> static void PushToQueue(byte[] pushData, QueueNum queueNum, bool enforcedPush = false) { switch (queueNum) { case QueueNum.PipeToTcp: if (!ifTCPTransferEstablished && !enforcedPush) { return; // 传输不被允许,而且也不强制入队 } lock (pipeToTcpBufferLocker) { if (pipeToTcpBuffer.Count < maxBufferSize) { pipeToTcpBuffer.Enqueue(pushData); } else { Logger.HistoryPrinting(Logger.Level.WARN, MethodBase.GetCurrentMethod().DeclaringType.FullName, "PipeToTcpBuffer queue is full."); } } break; case QueueNum.TcpToPipe: if (!ifPipeTransferEstablished && !enforcedPush) { return; // 传输不被允许,而且也不强制入队 } lock (tcpToPipeBufferLocker) { if (tcpToPipeBuffer.Count < maxBufferSize) { tcpToPipeBuffer.Enqueue(pushData); } else { Logger.HistoryPrinting(Logger.Level.WARN, MethodBase.GetCurrentMethod().DeclaringType.FullName, "TcpToPipeBuffer queue is full."); } } break; default: Logger.HistoryPrinting(Logger.Level.INFO, MethodBase.GetCurrentMethod().DeclaringType.FullName, "No such queue exists, number: " + ((byte)queueNum).ToString() + "."); break; } }