18 using System.Collections.Generic;
35 _buffers =
new List<MemoryStream> {CreateBuffer()};
38 private List<MemoryStream> _buffers;
40 private static MemoryStream CreateBuffer()
45 public void Prepend(List<MemoryStream> lists)
47 foreach (var stream
in lists)
49 stream.Position = stream.Length;
52 _buffers.InsertRange(0, lists);
55 public void Append(List<MemoryStream> lists)
57 foreach (var stream
in lists)
59 stream.Position = stream.Length;
62 _buffers.AddRange(lists);
65 public override void Write(
byte[] b,
int off,
int len)
67 var buffer = _buffers[_buffers.Count -1];
68 var remaining = (int) (buffer.Length - buffer.Position);
69 while (len > remaining)
71 buffer.Write(b, off, remaining);
75 buffer = CreateBuffer();
78 remaining = (int) buffer.Length;
81 buffer.Write(b, off, len);
86 List<MemoryStream> result = _buffers;
90 foreach (MemoryStream b
in result)
93 b.SetLength(b.Position);
100 public override long Length 105 foreach (var buffer
in _buffers)
107 sum += buffer.Length;
void Prepend(List< MemoryStream > lists)
List< MemoryStream > GetBufferList()
override void Write(byte[] b, int off, int len)
void Append(List< MemoryStream > lists)