优化ETL过滤模块
大石头 authored at 2017-08-29 17:11:46
987.00 B
X
using System.IO;

namespace NewLife.Queue.Storage
{
    internal class WriterWorkItem
    {
        public readonly MemoryStream BufferStream;
        public readonly BinaryWriter BufferWriter;
        public readonly IStream WorkingStream;
        public long LastFlushedPosition;

        public WriterWorkItem(IStream stream)
        {
            WorkingStream = stream;
            BufferStream = new MemoryStream(8192);
            BufferWriter = new BinaryWriter(BufferStream);
        }

        public void AppendData(byte[] buf, int offset, int len)
        {
            WorkingStream.Write(buf, offset, len);
        }
        public void FlushToDisk()
        {
            WorkingStream.Flush();
            LastFlushedPosition = WorkingStream.Position;
        }
        public void ResizeStream(long length)
        {
            WorkingStream.SetLength(length);
        }
        public void Dispose()
        {
            WorkingStream.Dispose();
        }
    }
}