tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

InBuffer.cs (1390B)


      1 // InBuffer.cs
      2 
      3 namespace SevenZip.Buffer
      4 {
      5 public class InBuffer
      6 {
      7 	byte[] m_Buffer;
      8 	uint m_Pos;
      9 	uint m_Limit;
     10 	uint m_BufferSize;
     11 	System.IO.Stream m_Stream;
     12 	bool m_StreamWasExhausted;
     13 	ulong m_ProcessedSize;
     14 
     15 	public InBuffer(uint bufferSize)
     16 	{
     17 		m_Buffer = new byte[bufferSize];
     18 		m_BufferSize = bufferSize;
     19 	}
     20 
     21 	public void Init(System.IO.Stream stream)
     22 	{
     23 		m_Stream = stream;
     24 		m_ProcessedSize = 0;
     25 		m_Limit = 0;
     26 		m_Pos = 0;
     27 		m_StreamWasExhausted = false;
     28 	}
     29 
     30 	public bool ReadBlock()
     31 	{
     32 		if (m_StreamWasExhausted)
     33 			return false;
     34 		m_ProcessedSize += m_Pos;
     35 		int aNumProcessedBytes = m_Stream.Read(m_Buffer, 0, (int)m_BufferSize);
     36 		m_Pos = 0;
     37 		m_Limit = (uint)aNumProcessedBytes;
     38 		m_StreamWasExhausted = (aNumProcessedBytes == 0);
     39 		return (!m_StreamWasExhausted);
     40 	}
     41 
     42 
     43 	public void ReleaseStream()
     44 	{
     45 		// m_Stream.Close(); 
     46 		m_Stream = null;
     47 	}
     48 
     49 	public bool ReadByte(byte b) // check it
     50 	{
     51 		if (m_Pos >= m_Limit)
     52 			if (!ReadBlock())
     53 				return false;
     54 		b = m_Buffer[m_Pos++];
     55 		return true;
     56 	}
     57 
     58 	public byte ReadByte()
     59 	{
     60 		// return (byte)m_Stream.ReadByte();
     61 		if (m_Pos >= m_Limit)
     62 			if (!ReadBlock())
     63 				return 0xFF;
     64 		return m_Buffer[m_Pos++];
     65 	}
     66 
     67 	public ulong GetProcessedSize()
     68 	{
     69 		return m_ProcessedSize + m_Pos;
     70 	}
     71 }
     72 }