コード例 #1
0
        private ReadOnlySequence <byte> ConcactSequence(ref ReadOnlySequence <byte> first, ref ReadOnlySequence <byte> second)
        {
            SequenceSegment head = first.Start.GetObject() as SequenceSegment;
            SequenceSegment tail = first.End.GetObject() as SequenceSegment;

            if (head == null)
            {
                foreach (var segment in first)
                {
                    if (head == null)
                    {
                        tail = head = SequenceSegment.CopyFrom(segment);
                    }
                    else
                    {
                        tail = tail.SetNext(SequenceSegment.CopyFrom(segment));
                    }
                }
            }

            if (!second.IsEmpty)
            {
                foreach (var segment in second)
                {
                    tail = tail.SetNext(SequenceSegment.CopyFrom(segment));
                }
            }

            return(new ReadOnlySequence <byte>(head, 0, tail, tail.Memory.Length));
        }
コード例 #2
0
        private ReadOnlySequence <byte> CopySequence(ref ReadOnlySequence <byte> seq)
        {
            SequenceSegment head = null;
            SequenceSegment tail = null;

            foreach (var segment in seq)
            {
                var newSegment = SequenceSegment.CopyFrom(segment);

                if (head == null)
                {
                    tail = head = newSegment;
                }
                else
                {
                    tail = tail.SetNext(newSegment);
                }
            }

            return(new ReadOnlySequence <byte>(head, 0, tail, tail.Memory.Length));
        }