Editor/7zip/Common/OutBuffer.cs
#nullable disable
// 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; }
}
}