Пример #1
0
        // 获得接收缓冲区
        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);
        }
Пример #2
0
        // 释放接收缓冲区
        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);
            }
        }