Akka.Interfaced.SlimSocket.Server.HeadTailWriteStream.GetBuffers C# (CSharp) Метод

GetBuffers() публичный Метод

public GetBuffers ( int pos, int length, ArraySegment &segment0, ArraySegment &segment1 ) : void
pos int
length int
segment0 ArraySegment
segment1 ArraySegment
Результат void
        public void GetBuffers(int pos, int length, out ArraySegment<byte> segment0, out ArraySegment<byte> segment1)
        {
            var posEnd = pos + length;
            if (pos < 0 || posEnd > _length)
                throw new ArgumentOutOfRangeException();

            if (pos < _head.Count && posEnd <= _head.Count)
            {
                segment0 = new ArraySegment<byte>(_head.Array, _head.Offset + pos, length);
                segment1 = default(ArraySegment<byte>);
            }
            else if (pos >= _head.Count && posEnd >= _head.Count)
            {
                segment0 = new ArraySegment<byte>(_tail.Value.Array, _tail.Value.Offset + pos - _head.Count, length);
                segment1 = default(ArraySegment<byte>);
            }
            else
            {
                var firstLen = _head.Count - pos;
                segment0 = new ArraySegment<byte>(_head.Array, _head.Offset + pos, firstLen);
                segment1 = new ArraySegment<byte>(_tail.Value.Array, _tail.Value.Offset, length - firstLen);
            }
        }
    }