// 获得接收缓冲区 public RcvDataBuffer MallocRcvBuffer() { RcvDataBuffer rcvDataBuf = null; if (rcvDataBufList.Count() > 0) { rcvDataBuf = rcvDataBufList[0]; rcvDataBufList.RemoveAt(0); } if (rcvDataBuf == null) { rcvDataBuf = new RcvDataBuffer(); if (rcvDataBuf == null) { return(null); } // 初始化 Buffer if (!rcvDataBuf.Init(rcvBufferSize, rcvBufferExtend)) { rcvDataBuf = null; return(null); } } return(rcvDataBuf); }
// 释放接收缓冲区 public void FreeRcvBuffer(RcvDataBuffer rcvDataBuf) { if (rcvDataBuf == null) { Trace.Assert(false, "rcvDataBuf is null"); return; } if (rcvDataBufList.Count() >= reservedSize) { // 释放 rcvDataBuf.Release(); rcvDataBuf = null; } else { // 重置、加入缓冲区 rcvDataBuf.Reset(); rcvDataBufList.Add(rcvDataBuf); } }