Пример #1
0
            /// <summary>Takes the remaining content of the stream and deserialze it into the instance.</summary>
            public static Example.Person.PhoneNumber Deserialize(Stream stream, Example.Person.PhoneNumber instance)
            {
                instance.Type = Example.Person.PhoneType.HOME;
                while (true)
                {
                    int keyByte = stream.ReadByte();
                    if (keyByte == -1)
                    {
                        break;
                    }
                    // Optimized reading of known fields with field ID < 16
                    switch (keyByte)
                    {
                    // Field 1 LengthDelimited
                    case 10:
                        instance.Number = global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadString(stream);
                        continue;

                    // Field 2 Varint
                    case 16:
                        instance.Type = (Example.Person.PhoneType)global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadUInt64(stream);
                        continue;
                    }

                    var key = global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadKey((byte)keyByte, stream);

                    // Reading field ID > 16 and unknown field ID/wire type combinations
                    switch (key.Field)
                    {
                    case 0:
                        throw new global::SilentOrbit.ProtocolBuffers.ProtocolBufferException("Invalid field id: 0, something went wrong in the stream");

                    default:
                        global::SilentOrbit.ProtocolBuffers.ProtocolParser.SkipKey(stream, key);
                        break;
                    }
                }

                return(instance);
            }
Пример #2
0
 /// <summary>Helper: put the buffer into a MemoryStream before deserializing</summary>
 public static Example.Person.PhoneNumber Deserialize(byte[] buffer, Example.Person.PhoneNumber instance)
 {
     using (var ms = new MemoryStream(buffer))
         Deserialize(ms, instance);
     return(instance);
 }