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)); }
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)); }