// OutBuffer.cs | |
namespace SevenZip.Buffer | |
{ | |
public class OutBuffer | |
{ | |
byte[] m_Buffer; | |
uint m_Pos; | |
uint m_BufferSize; | |
System.IO.Stream m_Stream; | |
ulong m_ProcessedSize; | |
public OutBuffer(uint bufferSize) | |
{ | |
m_Buffer = new byte[bufferSize]; | |
m_BufferSize = bufferSize; | |
} | |
public void SetStream(System.IO.Stream stream) { m_Stream = stream; } | |
public void FlushStream() { m_Stream.Flush(); } | |
public void CloseStream() { m_Stream.Close(); } | |
public void ReleaseStream() { m_Stream = null; } | |
public void Init() | |
{ | |
m_ProcessedSize = 0; | |
m_Pos = 0; | |
} | |
public void WriteByte(byte b) | |
{ | |
m_Buffer[m_Pos++] = b; | |
if (m_Pos >= m_BufferSize) | |
FlushData(); | |
} | |
public void FlushData() | |
{ | |
if (m_Pos == 0) | |
return; | |
m_Stream.Write(m_Buffer, 0, (int)m_Pos); | |
m_Pos = 0; | |
} | |
public ulong GetProcessedSize() { return m_ProcessedSize + m_Pos; } | |
} | |
} |