Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
 public static void WriteZInt32(Stream stream, int val)
 {
     ProtocolParser.WriteUInt32(stream, (uint)(val << 1 ^ val >> 31));
 }
Ejemplo n.º 3
0
        public static void WriteKey(Stream stream, Key key)
        {
            uint field = key.Field << 3 | (UInt32)key.WireType;

            ProtocolParser.WriteUInt32(stream, field);
        }
Ejemplo n.º 4
0
 public static void WriteBytes(Stream stream, byte[] val)
 {
     ProtocolParser.WriteUInt32(stream, (uint)val.Length);
     stream.Write(val, 0, (int)val.Length);
 }
Ejemplo n.º 5
0
        public static void WriteKey(Stream stream, Key key)
        {
            uint val = (uint)((Wire)((int)key.Field << 3) | key.WireType);

            ProtocolParser.WriteUInt32(stream, val);
        }