public override ServerNotify.Builder MergeFrom( ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); UnknownFieldSet.Builder unknownFields = (UnknownFieldSet.Builder)null; uint fieldTag; string fieldName; while (input.ReadTag(out fieldTag, out fieldName)) { if (fieldTag == 0U && fieldName != null) { int index = Array.BinarySearch <string>(ServerNotify._serverNotifyFieldNames, fieldName, (IComparer <string>)StringComparer.Ordinal); if (index >= 0) { fieldTag = ServerNotify._serverNotifyFieldTags[index]; } else { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, fieldTag, fieldName); continue; } } switch (fieldTag) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 8: object unknown; if (input.ReadEnum <ServerNotify.Types.NotifyType>(ref this.result.type_, out unknown)) { this.result.hasType = true; continue; } if (unknown is int) { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } unknownFields.MergeVarintField(1, (ulong)(int)unknown); continue; } continue; case 18: this.result.hasInfo = input.ReadString(ref this.result.info_); continue; case 26: this.result.hasExtradata = input.ReadBytes(ref this.result.extradata_); continue; case 34: this.result.hasSeqId = input.ReadString(ref this.result.seqId_); continue; default: if (WireFormat.IsEndGroupTag(fieldTag)) { if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); } if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, fieldTag, fieldName); continue; } } if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); }
protected override bool ParseUnknownField(ICodedInputStream input, ExtensionRegistry extensionRegistry, uint tag, string fieldName) { FieldSet extensions = MessageBeingBuilt.Extensions; WireFormat.WireType wireType = WireFormat.GetTagWireType(tag); int fieldNumber = WireFormat.GetTagFieldNumber(tag); IGeneratedExtensionLite extension = extensionRegistry[DefaultInstanceForType, fieldNumber]; if (extension == null) //unknown field { return(input.SkipField()); } IFieldDescriptorLite field = extension.Descriptor; // Unknown field or wrong wire type. Skip. if (field == null) { return(input.SkipField()); } WireFormat.WireType expectedType = field.IsPacked ? WireFormat.WireType.LengthDelimited : WireFormat.GetWireType(field.FieldType); if (wireType != expectedType) { expectedType = WireFormat.GetWireType(field.FieldType); if (wireType == expectedType) { //Allowed as of 2.3, this is unpacked data for a packed array } else if (field.IsRepeated && wireType == WireFormat.WireType.LengthDelimited && (expectedType == WireFormat.WireType.Varint || expectedType == WireFormat.WireType.Fixed32 || expectedType == WireFormat.WireType.Fixed64)) { //Allowed as of 2.3, this is packed data for an unpacked array } else { return(input.SkipField()); } } if (!field.IsRepeated && wireType != WireFormat.GetWireType(field.FieldType)) //invalid wire type { return(input.SkipField()); } switch (field.FieldType) { case FieldType.Group: case FieldType.Message: { if (!field.IsRepeated) { IMessageLite message = extensions[extension.Descriptor] as IMessageLite; IBuilderLite subBuilder = (message ?? extension.MessageDefaultInstance).WeakToBuilder(); if (field.FieldType == FieldType.Group) { input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry); } else { input.ReadMessage(subBuilder, extensionRegistry); } extensions[field] = subBuilder.WeakBuild(); } else { List <IMessageLite> list = new List <IMessageLite>(); if (field.FieldType == FieldType.Group) { input.ReadGroupArray(tag, fieldName, list, extension.MessageDefaultInstance, extensionRegistry); } else { input.ReadMessageArray(tag, fieldName, list, extension.MessageDefaultInstance, extensionRegistry); } foreach (IMessageLite m in list) { extensions.AddRepeatedField(field, m); } return(true); } break; } case FieldType.Enum: { if (!field.IsRepeated) { object unknown; IEnumLite value = null; if (input.ReadEnum(ref value, out unknown, field.EnumType)) { extensions[field] = value; } } else { ICollection <object> unknown; List <IEnumLite> list = new List <IEnumLite>(); input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType); foreach (IEnumLite en in list) { extensions.AddRepeatedField(field, en); } } break; } default: { if (!field.IsRepeated) { object value = null; if (input.ReadPrimitiveField(field.FieldType, ref value)) { extensions[field] = value; } } else { List <object> list = new List <object>(); input.ReadPrimitiveArray(field.FieldType, tag, fieldName, list); foreach (object oval in list) { extensions.AddRepeatedField(field, oval); } } break; } } return(true); }
/// <summary> /// Like <see cref="MergeFrom(ICodedInputStream, ExtensionRegistry, IBuilder)" /> /// but parses a single field. /// </summary> /// <param name="input">The input to read the field from</param> /// <param name="extensionRegistry">Registry to use when an extension field is encountered</param> /// <param name="builder">Builder to merge field into, if it's a known field</param> /// <param name="tag">The tag, which should already have been read from the input</param> /// <returns>true unless the tag is an end-group tag</returns> internal bool MergeFieldFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry, IBuilder builder, uint tag, string fieldName) { if (tag == 0 && fieldName != null) { FieldDescriptor fieldByName = builder.DescriptorForType.FindFieldByName(fieldName); if (fieldByName != null) { tag = WireFormat.MakeTag(fieldByName); } else { ExtensionInfo extension = extensionRegistry.FindByName(builder.DescriptorForType, fieldName); if (extension != null) { tag = WireFormat.MakeTag(extension.Descriptor); } } } MessageDescriptor type = builder.DescriptorForType; if (type.Options.MessageSetWireFormat && tag == WireFormat.MessageSetTag.ItemStart) { MergeMessageSetExtensionFromCodedStream(input, extensionRegistry, builder); return(true); } WireFormat.WireType wireType = WireFormat.GetTagWireType(tag); int fieldNumber = WireFormat.GetTagFieldNumber(tag); FieldDescriptor field; IMessageLite defaultFieldInstance = null; if (type.IsExtensionNumber(fieldNumber)) { ExtensionInfo extension = extensionRegistry[type, fieldNumber]; if (extension == null) { field = null; } else { field = extension.Descriptor; defaultFieldInstance = extension.DefaultInstance; } } else { field = type.FindFieldByNumber(fieldNumber); } // Unknown field or wrong wire type. Skip. if (field == null) { return(MergeFieldFrom(tag, input)); } if (wireType != WireFormat.GetWireType(field)) { WireFormat.WireType expectedType = WireFormat.GetWireType(field.FieldType); if (wireType == expectedType) { //Allowed as of 2.3, this is unpacked data for a packed array } else if (field.IsRepeated && wireType == WireFormat.WireType.LengthDelimited && (expectedType == WireFormat.WireType.Varint || expectedType == WireFormat.WireType.Fixed32 || expectedType == WireFormat.WireType.Fixed64)) { //Allowed as of 2.3, this is packed data for an unpacked array } else { return(MergeFieldFrom(tag, input)); } } switch (field.FieldType) { case FieldType.Group: case FieldType.Message: { IBuilderLite subBuilder = (defaultFieldInstance != null) ? defaultFieldInstance.WeakCreateBuilderForType() : builder.CreateBuilderForField(field); if (!field.IsRepeated) { subBuilder.WeakMergeFrom((IMessageLite)builder[field]); if (field.FieldType == FieldType.Group) { input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry); } else { input.ReadMessage(subBuilder, extensionRegistry); } builder[field] = subBuilder.WeakBuild(); } else { List <IMessageLite> list = new List <IMessageLite>(); if (field.FieldType == FieldType.Group) { input.ReadGroupArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType, extensionRegistry); } else { input.ReadMessageArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType, extensionRegistry); } foreach (IMessageLite m in list) { builder.WeakAddRepeatedField(field, m); } return(true); } break; } case FieldType.Enum: { if (!field.IsRepeated) { object unknown; IEnumLite value = null; if (input.ReadEnum(ref value, out unknown, field.EnumType)) { builder[field] = value; } else if (unknown is int) { MergeVarintField(fieldNumber, (ulong)(int)unknown); } } else { ICollection <object> unknown; List <IEnumLite> list = new List <IEnumLite>(); input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType); foreach (IEnumLite en in list) { builder.WeakAddRepeatedField(field, en); } if (unknown != null) { foreach (object oval in unknown) { if (oval is int) { MergeVarintField(fieldNumber, (ulong)(int)oval); } } } } break; } default: { if (!field.IsRepeated) { object value = null; if (input.ReadPrimitiveField(field.FieldType, ref value)) { builder[field] = value; } } else { List <object> list = new List <object>(); input.ReadPrimitiveArray(field.FieldType, tag, fieldName, list); foreach (object oval in list) { builder.WeakAddRepeatedField(field, oval); } } break; } } return(true); }
public override RustProto.User.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); UnknownFieldSet.Builder unknownFields = null; while (input.ReadTag(out num, out str)) { object obj2; if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(RustProto.User._userFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = RustProto.User._userFieldTags[index]; } else { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, num, str); continue; } } switch (num) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 8: { this.result.hasUserid = input.ReadUInt64(ref this.result.userid_); continue; } case 0x12: { this.result.hasDisplayname = input.ReadString(ref this.result.displayname_); continue; } case 0x18: break; default: { if (WireFormat.IsEndGroupTag(num)) { if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); } if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, num, str); continue; } } if (input.ReadEnum <RustProto.User.Types.UserGroup>(ref this.result.usergroup_, out obj2)) { this.result.hasUsergroup = true; } else { if (!(obj2 is int)) { continue; } if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } unknownFields.MergeVarintField(3, (ulong)((int)obj2)); } } if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); }
// Token: 0x0600154D RID: 5453 RVA: 0x0004802C File Offset: 0x0004622C public override AwayEvent.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); UnknownFieldSet.Builder builder = null; uint num; string text; while (input.ReadTag(ref num, ref text)) { if (num == 0u && text != null) { int num2 = Array.BinarySearch <string>(AwayEvent._awayEventFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); continue; } num = AwayEvent._awayEventFieldTags[num2]; } uint num3 = num; if (num3 == 0u) { throw InvalidProtocolBufferException.InvalidTag(); } object obj; if (num3 != 8u) { if (num3 != 16u) { if (num3 != 24u) { if (WireFormat.IsEndGroupTag(num)) { if (builder != null) { this.UnknownFields = builder.Build(); } return(this); } if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); } else { this.result.hasInstigator = input.ReadUInt64(ref this.result.instigator_); } } else { this.result.hasTimestamp = input.ReadInt32(ref this.result.timestamp_); } } else if (input.ReadEnum <AwayEvent.Types.AwayEventType>(ref this.result.type_, ref obj)) { this.result.hasType = true; } else if (obj is int) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } builder.MergeVarintField(1, (ulong)((long)((int)obj))); } } if (builder != null) { this.UnknownFields = builder.Build(); } return(this); }
public override AwayEvent.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); UnknownFieldSet.Builder unknownFields = null; while (input.ReadTag(out num, out str)) { if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(AwayEvent._awayEventFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = AwayEvent._awayEventFieldTags[index]; } else { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, num, str); continue; } } switch (num) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 8: { object obj2; if (input.ReadEnum <AwayEvent.Types.AwayEventType>(ref this.result.type_, out obj2)) { this.result.hasType = true; } else if (obj2 is int) { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } unknownFields.MergeVarintField(1, (ulong)((int)obj2)); } continue; } case 0x10: { this.result.hasTimestamp = input.ReadInt32(ref this.result.timestamp_); continue; } case 0x18: break; default: { if (WireFormat.IsEndGroupTag(num)) { if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); } if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, num, str); continue; } } this.result.hasInstigator = input.ReadUInt64(ref this.result.instigator_); } if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); }
public override RustProto.User.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; object obj; this.PrepareBuilder(); UnknownFieldSet.Builder builder = null; while (input.ReadTag(out num, out str)) { if (num == 0 && str != null) { int num1 = Array.BinarySearch <string>(RustProto.User._userFieldNames, str, StringComparer.Ordinal); if (num1 < 0) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, str); continue; } else { num = RustProto.User._userFieldTags[num1]; } } uint num2 = num; if (num2 == 0) { throw InvalidProtocolBufferException.InvalidTag(); } if (num2 == 8) { this.result.hasUserid = input.ReadUInt64(ref this.result.userid_); } else if (num2 == 18) { this.result.hasDisplayname = input.ReadString(ref this.result.displayname_); } else if (num2 != 24) { if (WireFormat.IsEndGroupTag(num)) { if (builder != null) { this.UnknownFields = builder.Build(); } return(this); } if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, str); } else if (input.ReadEnum <RustProto.User.Types.UserGroup>(ref this.result.usergroup_, out obj)) { this.result.hasUsergroup = true; } else if (obj is int) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } builder.MergeVarintField(3, (ulong)((int)obj)); } } if (builder != null) { this.UnknownFields = builder.Build(); } return(this); }
public override PushResult.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); UnknownFieldSet.Builder builder = null; uint num; string text; while (input.ReadTag(out num, out text)) { if (num == 0u && text != null) { int num2 = Array.BinarySearch <string>(PushResult._pushResultFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); continue; } num = PushResult._pushResultFieldTags[num2]; } if (num <= 26u) { if (num <= 8u) { if (num == 0u) { throw InvalidProtocolBufferException.InvalidTag(); } if (num == 8u) { object obj; if (input.ReadEnum <PushResult.Types.EPushResult>(ref this.result.result_, out obj)) { this.result.hasResult = true; continue; } if (obj is int) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } builder.MergeVarintField(1, (ulong)((long)((int)obj))); continue; } continue; } } else { if (num == 18u) { this.result.hasTaskId = input.ReadString(ref this.result.taskId_); continue; } if (num == 26u) { this.result.hasMessageId = input.ReadString(ref this.result.messageId_); continue; } } } else if (num <= 42u) { if (num == 34u) { this.result.hasSeqId = input.ReadString(ref this.result.seqId_); continue; } if (num == 42u) { this.result.hasTarget = input.ReadString(ref this.result.target_); continue; } } else { if (num == 50u) { this.result.hasInfo = input.ReadString(ref this.result.info_); continue; } if (num == 58u) { this.result.hasTraceId = input.ReadString(ref this.result.traceId_); continue; } if (num == 66u) { this.result.hasBatchId = input.ReadString(ref this.result.batchId_); continue; } } if (WireFormat.IsEndGroupTag(num)) { if (builder != null) { this.UnknownFields = builder.Build(); } return(this); } if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); } if (builder != null) { this.UnknownFields = builder.Build(); } return(this); }
protected override bool ParseUnknownField(ICodedInputStream input, ExtensionRegistry extensionRegistry, uint tag, string fieldName) { TMessage messageBeingBuilt = this.MessageBeingBuilt; FieldSet extensions = messageBeingBuilt.Extensions; WireFormat.WireType tagWireType = WireFormat.GetTagWireType(tag); int tagFieldNumber = WireFormat.GetTagFieldNumber(tag); IGeneratedExtensionLite generatedExtensionLite = extensionRegistry[this.DefaultInstanceForType, tagFieldNumber]; if (generatedExtensionLite == null) { return(input.SkipField()); } IFieldDescriptorLite descriptor = generatedExtensionLite.Descriptor; if (descriptor == null) { return(input.SkipField()); } WireFormat.WireType wireType = descriptor.IsPacked ? WireFormat.WireType.LengthDelimited : WireFormat.GetWireType(descriptor.FieldType); if (tagWireType != wireType) { wireType = WireFormat.GetWireType(descriptor.FieldType); if (tagWireType != wireType && (!descriptor.IsRepeated || tagWireType != WireFormat.WireType.LengthDelimited || (wireType != WireFormat.WireType.Varint && wireType != WireFormat.WireType.Fixed32 && wireType != WireFormat.WireType.Fixed64))) { return(input.SkipField()); } } if (!descriptor.IsRepeated && tagWireType != WireFormat.GetWireType(descriptor.FieldType)) { return(input.SkipField()); } FieldType fieldType = descriptor.FieldType; switch (fieldType) { case FieldType.Group: case FieldType.Message: { if (descriptor.IsRepeated) { List <IMessageLite> list = new List <IMessageLite>(); if (descriptor.FieldType == FieldType.Group) { input.ReadGroupArray <IMessageLite>(tag, fieldName, list, generatedExtensionLite.MessageDefaultInstance, extensionRegistry); } else { input.ReadMessageArray <IMessageLite>(tag, fieldName, list, generatedExtensionLite.MessageDefaultInstance, extensionRegistry); } using (List <IMessageLite> .Enumerator enumerator = list.GetEnumerator()) { while (enumerator.MoveNext()) { IMessageLite current = enumerator.Current; extensions.AddRepeatedField(descriptor, current); } } return(true); } IMessageLite messageLite = extensions[generatedExtensionLite.Descriptor] as IMessageLite; IBuilderLite builderLite = (messageLite ?? generatedExtensionLite.MessageDefaultInstance).WeakToBuilder(); if (descriptor.FieldType == FieldType.Group) { input.ReadGroup(descriptor.FieldNumber, builderLite, extensionRegistry); } else { input.ReadMessage(builderLite, extensionRegistry); } extensions[descriptor] = builderLite.WeakBuild(); break; } default: if (fieldType == FieldType.Enum) { if (!descriptor.IsRepeated) { IEnumLite value = null; object obj; if (input.ReadEnum(ref value, out obj, descriptor.EnumType)) { extensions[descriptor] = value; break; } break; } else { List <IEnumLite> list2 = new List <IEnumLite>(); ICollection <object> collection; input.ReadEnumArray(tag, fieldName, list2, out collection, descriptor.EnumType); using (List <IEnumLite> .Enumerator enumerator2 = list2.GetEnumerator()) { while (enumerator2.MoveNext()) { IEnumLite current2 = enumerator2.Current; extensions.AddRepeatedField(descriptor, current2); } break; } } } if (!descriptor.IsRepeated) { object value2 = null; if (input.ReadPrimitiveField(descriptor.FieldType, ref value2)) { extensions[descriptor] = value2; } } else { List <object> list3 = new List <object>(); input.ReadPrimitiveArray(descriptor.FieldType, tag, fieldName, list3); using (List <object> .Enumerator enumerator3 = list3.GetEnumerator()) { while (enumerator3.MoveNext()) { object current3 = enumerator3.Current; extensions.AddRepeatedField(descriptor, current3); } } } break; } return(true); }
public override NotifyInfo.Builder MergeFrom( ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); UnknownFieldSet.Builder unknownFields = (UnknownFieldSet.Builder)null; uint fieldTag; string fieldName; while (input.ReadTag(out fieldTag, out fieldName)) { if (fieldTag == 0U && fieldName != null) { int index = Array.BinarySearch <string>(NotifyInfo._notifyInfoFieldNames, fieldName, (IComparer <string>)StringComparer.Ordinal); if (index >= 0) { fieldTag = NotifyInfo._notifyInfoFieldTags[index]; } else { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, fieldTag, fieldName); continue; } } switch (fieldTag) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 10: this.result.hasTitle = input.ReadString(ref this.result.title_); continue; case 18: this.result.hasContent = input.ReadString(ref this.result.content_); continue; case 26: this.result.hasPayload = input.ReadString(ref this.result.payload_); continue; case 34: this.result.hasIntent = input.ReadString(ref this.result.intent_); continue; case 42: this.result.hasUrl = input.ReadString(ref this.result.url_); continue; case 48: object unknown; if (input.ReadEnum <NotifyInfo.Types.Type>(ref this.result.type_, out unknown)) { this.result.hasType = true; continue; } if (unknown is int) { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } unknownFields.MergeVarintField(6, (ulong)(int)unknown); continue; } continue; case 58: this.result.hasNotifyId = input.ReadString(ref this.result.notifyId_); continue; default: if (WireFormat.IsEndGroupTag(fieldTag)) { if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); } if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, fieldTag, fieldName); continue; } } if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); }
public override PushResult.Builder MergeFrom( ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); UnknownFieldSet.Builder unknownFields = (UnknownFieldSet.Builder)null; uint fieldTag; string fieldName; while (input.ReadTag(out fieldTag, out fieldName)) { if (fieldTag == 0U && fieldName != null) { int index = Array.BinarySearch <string>(PushResult._pushResultFieldNames, fieldName, (IComparer <string>)StringComparer.Ordinal); if (index >= 0) { fieldTag = PushResult._pushResultFieldTags[index]; } else { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, fieldTag, fieldName); continue; } } switch (fieldTag) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 8: object unknown; if (input.ReadEnum <PushResult.Types.EPushResult>(ref this.result.result_, out unknown)) { this.result.hasResult = true; continue; } if (unknown is int) { if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } unknownFields.MergeVarintField(1, (ulong)(int)unknown); continue; } continue; case 18: this.result.hasTaskId = input.ReadString(ref this.result.taskId_); continue; case 26: this.result.hasMessageId = input.ReadString(ref this.result.messageId_); continue; case 34: this.result.hasSeqId = input.ReadString(ref this.result.seqId_); continue; case 42: this.result.hasTarget = input.ReadString(ref this.result.target_); continue; case 50: this.result.hasInfo = input.ReadString(ref this.result.info_); continue; case 58: this.result.hasTraceId = input.ReadString(ref this.result.traceId_); continue; case 66: this.result.hasBatchId = input.ReadString(ref this.result.batchId_); continue; default: if (WireFormat.IsEndGroupTag(fieldTag)) { if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); } if (unknownFields == null) { unknownFields = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, unknownFields, extensionRegistry, fieldTag, fieldName); continue; } } if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); }
/// <summary> /// Like <see cref="MergeFrom(ICodedInputStream, ExtensionRegistry, IBuilder)" /> /// but parses a single field. /// </summary> /// <param name="input">The input to read the field from</param> /// <param name="extensionRegistry">Registry to use when an extension field is encountered</param> /// <param name="builder">Builder to merge field into, if it's a known field</param> /// <param name="tag">The tag, which should already have been read from the input</param> /// <returns>true unless the tag is an end-group tag</returns> internal bool MergeFieldFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry, IBuilder builder, uint tag, string fieldName) { if (tag == 0 && fieldName != null) { FieldDescriptor fieldByName = builder.DescriptorForType.FindFieldByName(fieldName); if (fieldByName != null) { tag = WireFormat.MakeTag(fieldByName); } else { ExtensionInfo extension = extensionRegistry.FindByName(builder.DescriptorForType, fieldName); if (extension != null) { tag = WireFormat.MakeTag(extension.Descriptor); } } } MessageDescriptor type = builder.DescriptorForType; if (type.Options.MessageSetWireFormat && tag == WireFormat.MessageSetTag.ItemStart) { MergeMessageSetExtensionFromCodedStream(input, extensionRegistry, builder); return true; } WireFormat.WireType wireType = WireFormat.GetTagWireType(tag); int fieldNumber = WireFormat.GetTagFieldNumber(tag); FieldDescriptor field; IMessageLite defaultFieldInstance = null; if (type.IsExtensionNumber(fieldNumber)) { ExtensionInfo extension = extensionRegistry[type, fieldNumber]; if (extension == null) { field = null; } else { field = extension.Descriptor; defaultFieldInstance = extension.DefaultInstance; } } else { field = type.FindFieldByNumber(fieldNumber); } // Unknown field or wrong wire type. Skip. if (field == null) { return MergeFieldFrom(tag, input); } if (wireType != WireFormat.GetWireType(field)) { WireFormat.WireType expectedType = WireFormat.GetWireType(field.FieldType); if (wireType == expectedType) { //Allowed as of 2.3, this is unpacked data for a packed array } else if (field.IsRepeated && wireType == WireFormat.WireType.LengthDelimited && (expectedType == WireFormat.WireType.Varint || expectedType == WireFormat.WireType.Fixed32 || expectedType == WireFormat.WireType.Fixed64)) { //Allowed as of 2.3, this is packed data for an unpacked array } else { return MergeFieldFrom(tag, input); } } switch (field.FieldType) { case FieldType.Group: case FieldType.Message: { IBuilderLite subBuilder = (defaultFieldInstance != null) ? defaultFieldInstance.WeakCreateBuilderForType() : builder.CreateBuilderForField(field); if (!field.IsRepeated) { subBuilder.WeakMergeFrom((IMessageLite) builder[field]); if (field.FieldType == FieldType.Group) { input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry); } else { input.ReadMessage(subBuilder, extensionRegistry); } builder[field] = subBuilder.WeakBuild(); } else { List<IMessageLite> list = new List<IMessageLite>(); if (field.FieldType == FieldType.Group) { input.ReadGroupArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType, extensionRegistry); } else { input.ReadMessageArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType, extensionRegistry); } foreach (IMessageLite m in list) { builder.WeakAddRepeatedField(field, m); } return true; } break; } case FieldType.Enum: { if (!field.IsRepeated) { object unknown; IEnumLite value = null; if (input.ReadEnum(ref value, out unknown, field.EnumType)) { builder[field] = value; } else if (unknown is int) { MergeVarintField(fieldNumber, (ulong) (int) unknown); } } else { ICollection<object> unknown; List<IEnumLite> list = new List<IEnumLite>(); input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType); foreach (IEnumLite en in list) { builder.WeakAddRepeatedField(field, en); } if (unknown != null) { foreach (object oval in unknown) { if (oval is int) { MergeVarintField(fieldNumber, (ulong) (int) oval); } } } } break; } default: { if (!field.IsRepeated) { object value = null; if (input.ReadPrimitiveField(field.FieldType, ref value)) { builder[field] = value; } } else { List<object> list = new List<object>(); input.ReadPrimitiveArray(field.FieldType, tag, fieldName, list); foreach (object oval in list) { builder.WeakAddRepeatedField(field, oval); } } break; } } return true; }
public override InnerFiled.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); UnknownFieldSet.Builder builder = null; uint num; string text; while (input.ReadTag(out num, out text)) { if (num == 0u && text != null) { int num2 = Array.BinarySearch <string>(InnerFiled._innerFiledFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); continue; } num = InnerFiled._innerFiledFieldTags[num2]; } if (num <= 10u) { if (num == 0u) { throw InvalidProtocolBufferException.InvalidTag(); } if (num == 10u) { this.result.hasKey = input.ReadString(ref this.result.key_); continue; } } else { if (num == 18u) { this.result.hasVal = input.ReadString(ref this.result.val_); continue; } if (num == 24u) { object obj; if (input.ReadEnum <InnerFiled.Types.Type>(ref this.result.type_, out obj)) { this.result.hasType = true; continue; } if (obj is int) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } builder.MergeVarintField(3, (ulong)((long)((int)obj))); continue; } continue; } } if (WireFormat.IsEndGroupTag(num)) { if (builder != null) { this.UnknownFields = builder.Build(); } return(this); } if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); } if (builder != null) { this.UnknownFields = builder.Build(); } return(this); }
public override NotifyInfo.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); UnknownFieldSet.Builder builder = null; uint num; string text; while (input.ReadTag(out num, out text)) { if (num == 0u && text != null) { int num2 = Array.BinarySearch <string>(NotifyInfo._notifyInfoFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); continue; } num = NotifyInfo._notifyInfoFieldTags[num2]; } if (num <= 26u) { if (num <= 10u) { if (num == 0u) { throw InvalidProtocolBufferException.InvalidTag(); } if (num == 10u) { this.result.hasTitle = input.ReadString(ref this.result.title_); continue; } } else { if (num == 18u) { this.result.hasContent = input.ReadString(ref this.result.content_); continue; } if (num == 26u) { this.result.hasPayload = input.ReadString(ref this.result.payload_); continue; } } } else if (num <= 42u) { if (num == 34u) { this.result.hasIntent = input.ReadString(ref this.result.intent_); continue; } if (num == 42u) { this.result.hasUrl = input.ReadString(ref this.result.url_); continue; } } else if (num != 48u) { if (num == 58u) { this.result.hasNotifyId = input.ReadString(ref this.result.notifyId_); continue; } } else { object obj; if (input.ReadEnum <NotifyInfo.Types.Type>(ref this.result.type_, out obj)) { this.result.hasType = true; continue; } if (obj is int) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } builder.MergeVarintField(6, (ulong)((long)((int)obj))); continue; } continue; } if (WireFormat.IsEndGroupTag(num)) { if (builder != null) { this.UnknownFields = builder.Build(); } return(this); } if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); } if (builder != null) { this.UnknownFields = builder.Build(); } return(this); }