예제 #1
0
 private void ReturnSegmentUnsynchronized(BufferSegment segment)
 {
     segment.Reset();
     if (_bufferSegmentPool.Count < MaxSegmentPoolSize)
     {
         _bufferSegmentPool.Push(segment);
     }
 }
예제 #2
0
        private bool CompleteAndGetNeedsDispose()
        {
            if (_isReaderCompleted)
            {
                return(false);
            }

            _isReaderCompleted = true;

            BufferSegment?segment = _readHead;

            while (segment != null)
            {
                BufferSegment returnSegment = segment;
                segment = segment.NextSegment;

                returnSegment.Reset();
            }

            return(!LeaveOpen);
        }