public static byte[] ReadValueBytes(Stream stream, Key key) { int offset = 0; switch (key.WireType) { case Wire.Varint: return(ProtocolParser.ReadVarIntBytes(stream)); case Wire.Fixed64: byte[] buffer1 = new byte[8]; while (offset < 8) { offset += stream.Read(buffer1, offset, 8 - offset); } return(buffer1); case Wire.LengthDelimited: uint val = ProtocolParser.ReadUInt32(stream); byte[] buffer2; using (MemoryStream memoryStream = new MemoryStream()) { ProtocolParser.WriteUInt32((Stream)memoryStream, val); buffer2 = new byte[(long)val + memoryStream.Length]; memoryStream.ToArray().CopyTo((Array)buffer2, 0); offset = (int)memoryStream.Length; } while (offset < buffer2.Length) { offset += stream.Read(buffer2, offset, buffer2.Length - offset); } return(buffer2); case Wire.Fixed32: byte[] buffer3 = new byte[4]; while (offset < 4) { offset += stream.Read(buffer3, offset, 4 - offset); } return(buffer3); default: throw new NotImplementedException("Unknown wire type: " + (object)key.WireType); } }
public static void WriteZInt32(Stream stream, int val) { ProtocolParser.WriteUInt32(stream, (uint)(val << 1 ^ val >> 31)); }
public static void WriteKey(Stream stream, Key key) { uint field = key.Field << 3 | (UInt32)key.WireType; ProtocolParser.WriteUInt32(stream, field); }
public static void WriteBytes(Stream stream, byte[] val) { ProtocolParser.WriteUInt32(stream, (uint)val.Length); stream.Write(val, 0, (int)val.Length); }
public static void WriteKey(Stream stream, Key key) { uint val = (uint)((Wire)((int)key.Field << 3) | key.WireType); ProtocolParser.WriteUInt32(stream, val); }