public static Google.Protobuf.FileDescriptorProto DeserializeLengthDelimited(Stream stream, Google.Protobuf.FileDescriptorProto instance)
{
if (instance.Dependency == null)
instance.Dependency = new List<string>();
if (instance.PublicDependency == null)
instance.PublicDependency = new List<int>();
if (instance.WeakDependency == null)
instance.WeakDependency = new List<int>();
if (instance.MessageType == null)
instance.MessageType = new List<Google.Protobuf.DescriptorProto>();
if (instance.EnumType == null)
instance.EnumType = new List<Google.Protobuf.EnumDescriptorProto>();
if (instance.Service == null)
instance.Service = new List<Google.Protobuf.ServiceDescriptorProto>();
if (instance.Extension == null)
instance.Extension = new List<Google.Protobuf.FieldDescriptorProto>();
long limit = global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadUInt32(stream);
limit += stream.Position;
while (true)
{
if (stream.Position >= limit)
{
if (stream.Position == limit)
break;
else
throw new global::SilentOrbit.ProtocolBuffers.ProtocolBufferException("Read past max limit");
}
int keyByte = stream.ReadByte();
if (keyByte == -1)
throw new System.IO.EndOfStreamException();
// Optimized reading of known fields with field ID < 16
switch (keyByte)
{
// Field 1 LengthDelimited
case 10:
instance.Name = global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadString(stream);
continue;
// Field 2 LengthDelimited
case 18:
instance.Package = global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadString(stream);
continue;
// Field 3 LengthDelimited
case 26:
// repeated
instance.Dependency.Add(global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadString(stream));
continue;
// Field 10 Varint
case 80:
// repeated
instance.PublicDependency.Add((int)global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadUInt64(stream));
continue;
// Field 11 Varint
case 88:
// repeated
instance.WeakDependency.Add((int)global::SilentOrbit.ProtocolBuffers.ProtocolParser.ReadUInt64(stream));
continue;
// Field 4 LengthDelimited
case 34:
// repeated
instance.MessageType.Add(Google.Protobuf.DescriptorProto.DeserializeLengthDelimited(stream));
continue;
// Field 5 LengthDelimited
case 42:
// repeated
instance.EnumType.Add(Google.Protobuf.EnumDescriptorProto.DeserializeLengthDelimited(stream));
continue;
// Field 6 LengthDelimited
case 50:
// repeated
instance.Service.Add(Google.Protobuf.ServiceDescriptorProto.DeserializeLengthDelimited(stream));
continue;
// Field 7 LengthDelimited
case 58:
// repeated
instance.Extension.Add(Google.Protobuf.FieldDescriptorProto.DeserializeLengthDelimited(stream));
continue;
// Field 8 LengthDelimited
case 66:
if (instance.Options == null)
instance.Options = Google.Protobuf.FileOptions.DeserializeLengthDelimited(stream);
else
Google.Protobuf.FileOptions.DeserializeLengthDelimited(stream, instance.Options);
continue;
// Field 9 LengthDelimited
case 74:
if (instance.SourceCodeInfo == null)
instance.SourceCodeInfo = Google.Protobuf.SourceCodeInfo.DeserializeLengthDelimited(stream);
else
Google.Protobuf.SourceCodeInfo.DeserializeLengthDelimited(stream, instance.SourceCodeInfo);
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;
}