public ByteStream ReadStream(int size) { ByteBuilder innerBuilder = new ByteBuilder(m_Buffer, m_ReadPos, m_ReadPos + size); ByteStream ret = new ByteStream(innerBuilder, true, false); m_ReadPos += size; return(ret); }
private static void AddPacote(ByteBuilder buffer, int packetId, string mensagem) { MeuPacote pacote = new MeuPacote(); pacote.Header = new MeuCabecalho(); pacote.Header.Id = packetId; pacote.Header.Tipo = 123; pacote.Data = new MeusDados(); pacote.Data.Texto = mensagem; buffer.AddDelimited(pacote); }
static void Main() { int[] lista = new int[] { -1000000, -10000, -1000, -1, 0, 1, 127, 128, 255, 256, 1023, 1024, 8191, 8192, 16383, 16384, 1073741824, 1073741823, Int32.MaxValue }; byte[] varIntTmpbuffer = new byte[16]; for (int i = 0; i < 4; i++) { varIntTmpbuffer[i] = 0xff; } int rrSize1, rrSize2; rrSize1 = ByteUtil.ReadVarint(varIntTmpbuffer, 0, out rrSize2); var bb = ByteUtil.TryReadVarint(varIntTmpbuffer, 0, 5, out rrSize1, out rrSize2); for (int i = 0; i < lista.Length; i++) { varIntTmpbuffer = new byte[16]; int writeSize = ByteUtil.WriteVarInt(varIntTmpbuffer, 0, lista[i]); int readSize; int readResult = ByteUtil.ReadVarint(varIntTmpbuffer, 0, out readSize); int readSize2; int readResult2; bool boolResult2; boolResult2 = ByteUtil.TryReadVarint(varIntTmpbuffer, 0, 15, out readSize2, out readResult2); Debug.WriteLine(String.Format("IN={0} WSIZE={1} || RSIZE={2} OUT={3} || RSIZE={4} OUT={5} RET={6}", lista[i], writeSize, readSize, readResult, readSize2, readResult2, boolResult2)); } using (var output = File.Create(P_ARQUIVO)) { var tmpBuffer = new ByteBuilder(); AddPacote(tmpBuffer, 1, "Alfa"); AddPacote(tmpBuffer, 2, "Bravo"); AddPacote(tmpBuffer, 3, "Charlie"); AddPacote(tmpBuffer, 4, "Delta"); tmpBuffer.CopyTo(output); } using (var input = File.OpenRead(P_ARQUIVO)) { int readSize = 32; ByteBuilder readBuffer = new ByteBuilder(); // ByteStream readStream = new ByteStream(readBuffer); while (true) { var tmp = readBuffer.LockWrite(readSize); int lidos = input.Read(tmp.Ptr, tmp.Offset, tmp.Size); if (lidos == 0) { break; } readBuffer.ConfirmWrite(lidos); ByteStream packetStream = null; while (readBuffer.TryReadStreamDelimited(ref packetStream)) { var pacote = MeuPacote.Parser.ParseFrom(packetStream); Debug.WriteLine(String.Format("PACOTE: {0}", pacote)); } if (packetStream != null) { readBuffer.Compact(); } } } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }
public ByteBuilder(ByteBuilder src) { this.m_Buffer = src.m_Buffer; this.m_ReadPos = src.m_ReadPos; this.m_WritePos = src.m_WritePos; }
public ByteStream(ByteBuilder baseBuilder, bool canRead, bool canWrite) { m_Builder = baseBuilder; m_canRead = canRead; m_canWrite = canWrite; }
public ByteStream(ByteBuilder baseBuilder) { m_Builder = baseBuilder; m_canRead = true; m_canWrite = true; }