equal
deleted
inserted
replaced
|
1 // OutBuffer.cs |
|
2 |
|
3 namespace SevenZip.Buffer |
|
4 { |
|
5 public class OutBuffer |
|
6 { |
|
7 byte[] m_Buffer; |
|
8 uint m_Pos; |
|
9 uint m_BufferSize; |
|
10 System.IO.Stream m_Stream; |
|
11 ulong m_ProcessedSize; |
|
12 |
|
13 public OutBuffer(uint bufferSize) |
|
14 { |
|
15 m_Buffer = new byte[bufferSize]; |
|
16 m_BufferSize = bufferSize; |
|
17 } |
|
18 |
|
19 public void SetStream(System.IO.Stream stream) { m_Stream = stream; } |
|
20 public void FlushStream() { m_Stream.Flush(); } |
|
21 public void CloseStream() { m_Stream.Close(); } |
|
22 public void ReleaseStream() { m_Stream = null; } |
|
23 |
|
24 public void Init() |
|
25 { |
|
26 m_ProcessedSize = 0; |
|
27 m_Pos = 0; |
|
28 } |
|
29 |
|
30 public void WriteByte(byte b) |
|
31 { |
|
32 m_Buffer[m_Pos++] = b; |
|
33 if (m_Pos >= m_BufferSize) |
|
34 FlushData(); |
|
35 } |
|
36 |
|
37 public void FlushData() |
|
38 { |
|
39 if (m_Pos == 0) |
|
40 return; |
|
41 m_Stream.Write(m_Buffer, 0, (int)m_Pos); |
|
42 m_Pos = 0; |
|
43 } |
|
44 |
|
45 public ulong GetProcessedSize() { return m_ProcessedSize + m_Pos; } |
|
46 } |
|
47 } |