public override WXAppExtendMessageP.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); while (input.ReadTag(out num, out str)) { if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(WXAppExtendMessageP._wXAppExtendMessagePFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = WXAppExtendMessageP._wXAppExtendMessagePFieldTags[index]; } else { this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } switch (num) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 10: { this.result.hasFileData = input.ReadBytes(ref this.result.fileData_); continue; } case 0x12: { this.result.hasExtInfo = input.ReadString(ref this.result.extInfo_); continue; } case 0x1a: break; default: { if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } this.result.hasFileName = input.ReadString(ref this.result.fileName_); } return(this); }
public override BuiltinIP.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); while (input.ReadTag(out num, out str)) { if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(BuiltinIP._builtinIPFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = BuiltinIP._builtinIPFieldTags[index]; } else { this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } switch (num) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 8: { this.result.hasType = input.ReadUInt32(ref this.result.type_); continue; } case 0x10: { this.result.hasPort = input.ReadUInt32(ref this.result.port_); continue; } case 0x1a: break; default: { if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } this.result.hasIP = input.ReadBytes(ref this.result.iP_); } return(this); }
public override WXAppExtendMessageP.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); uint num; string text; while (input.ReadTag(out num, out text)) { if (num == 0u && text != null) { int num2 = Array.BinarySearch <string>(WXAppExtendMessageP._wXAppExtendMessagePFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { this.ParseUnknownField(input, extensionRegistry, num, text); continue; } num = WXAppExtendMessageP._wXAppExtendMessagePFieldTags[num2]; } uint num3 = num; if (num3 <= 10u) { if (num3 == 0u) { throw InvalidProtocolBufferException.InvalidTag(); } if (num3 == 10u) { this.result.hasFileData = input.ReadBytes(ref this.result.fileData_); continue; } } else { if (num3 == 18u) { this.result.hasExtInfo = input.ReadString(ref this.result.extInfo_); continue; } if (num3 == 26u) { this.result.hasFileName = input.ReadString(ref this.result.fileName_); continue; } } if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, text); } return(this); }
public override WXMessageP.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); while (input.ReadTag(out num, out str)) { if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(WXMessageP._wXMessagePFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = WXMessageP._wXMessagePFieldTags[index]; } else { this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } switch (num) { case 0x1a: { this.result.hasDescription = input.ReadString(ref this.result.description_); continue; } case 0x22: { this.result.hasThumbData = input.ReadBytes(ref this.result.thumbData_); continue; } case 0x2a: { WXEmojiMessageP.Builder builder = WXEmojiMessageP.CreateBuilder(); if (this.result.hasEmojiMessage) { builder.MergeFrom(this.EmojiMessage); } input.ReadMessage(builder, extensionRegistry); this.EmojiMessage = builder.BuildPartial(); continue; } case 0: throw InvalidProtocolBufferException.InvalidTag(); case 8: { this.result.hasType = input.ReadUInt32(ref this.result.type_); continue; } case 0x12: { this.result.hasTitle = input.ReadString(ref this.result.title_); continue; } case 50: { WXFileMessageP.Builder builder2 = WXFileMessageP.CreateBuilder(); if (this.result.hasFileMessage) { builder2.MergeFrom(this.FileMessage); } input.ReadMessage(builder2, extensionRegistry); this.FileMessage = builder2.BuildPartial(); continue; } case 0x3a: { WXImageMessageP.Builder builder3 = WXImageMessageP.CreateBuilder(); if (this.result.hasImageMessage) { builder3.MergeFrom(this.ImageMessage); } input.ReadMessage(builder3, extensionRegistry); this.ImageMessage = builder3.BuildPartial(); continue; } case 0x42: { WXMusicMessageP.Builder builder4 = WXMusicMessageP.CreateBuilder(); if (this.result.hasMusicMessage) { builder4.MergeFrom(this.MusicMessage); } input.ReadMessage(builder4, extensionRegistry); this.MusicMessage = builder4.BuildPartial(); continue; } case 0x4a: { WXTextMessageP.Builder builder5 = WXTextMessageP.CreateBuilder(); if (this.result.hasTextMessage) { builder5.MergeFrom(this.TextMessage); } input.ReadMessage(builder5, extensionRegistry); this.TextMessage = builder5.BuildPartial(); continue; } case 0x52: { WXVideoMessageP.Builder builder6 = WXVideoMessageP.CreateBuilder(); if (this.result.hasVideoMessage) { builder6.MergeFrom(this.VideoMessage); } input.ReadMessage(builder6, extensionRegistry); this.VideoMessage = builder6.BuildPartial(); continue; } case 90: { WXWebpageMessageP.Builder builder7 = WXWebpageMessageP.CreateBuilder(); if (this.result.hasWebpageMessage) { builder7.MergeFrom(this.WebpageMessage); } input.ReadMessage(builder7, extensionRegistry); this.WebpageMessage = builder7.BuildPartial(); continue; } case 0x62: { WXAppExtendMessageP.Builder builder8 = WXAppExtendMessageP.CreateBuilder(); if (this.result.hasAppExtendMessage) { builder8.MergeFrom(this.AppExtendMessage); } input.ReadMessage(builder8, extensionRegistry); this.AppExtendMessage = builder8.BuildPartial(); continue; } } if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, str); } return(this); }
// Token: 0x06001276 RID: 4726 RVA: 0x00042670 File Offset: 0x00040870 public override objectNGCInstance.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>(objectNGCInstance._objectNGCInstanceFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(this.UnknownFields); } this.ParseUnknownField(input, builder, extensionRegistry, num, text); continue; } num = objectNGCInstance._objectNGCInstanceFieldTags[num2]; } uint num3 = num; if (num3 == 0u) { throw InvalidProtocolBufferException.InvalidTag(); } if (num3 != 8u) { if (num3 != 18u) { 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.hasData = input.ReadBytes(ref this.result.data_); } } else { this.result.hasID = input.ReadInt32(ref this.result.iD_); } } if (builder != null) { this.UnknownFields = builder.Build(); } return(this); }
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); }
/// <summary> /// Called by MergeFieldFrom to parse a MessageSet extension. /// </summary> private void MergeMessageSetExtensionFromCodedStream(ICodedInputStream input, ExtensionRegistry extensionRegistry, IBuilder builder) { MessageDescriptor type = builder.DescriptorForType; // The wire format for MessageSet is: // message MessageSet { // repeated group Item = 1 { // required int32 typeId = 2; // required bytes message = 3; // } // } // "typeId" is the extension's field number. The extension can only be // a message type, where "message" contains the encoded bytes of that // message. // // In practice, we will probably never see a MessageSet item in which // the message appears before the type ID, or where either field does not // appear exactly once. However, in theory such cases are valid, so we // should be prepared to accept them. int typeId = 0; ByteString rawBytes = null; // If we encounter "message" before "typeId" IBuilderLite subBuilder = null; FieldDescriptor field = null; uint lastTag = WireFormat.MessageSetTag.ItemStart; uint tag; string name; while (input.ReadTag(out tag, out name)) { if (tag == 0 && name != null) { if (name == "type_id") { tag = WireFormat.MessageSetTag.TypeID; } else if (name == "message") { tag = WireFormat.MessageSetTag.Message; } } if (tag == 0) { if (input.SkipField()) { continue; //can't merge unknown without field tag } break; } lastTag = tag; if (tag == WireFormat.MessageSetTag.TypeID) { typeId = 0; // Zero is not a valid type ID. if (input.ReadInt32(ref typeId) && typeId != 0) { ExtensionInfo extension = extensionRegistry[type, typeId]; if (extension != null) { field = extension.Descriptor; subBuilder = extension.DefaultInstance.WeakCreateBuilderForType(); IMessageLite originalMessage = (IMessageLite)builder[field]; if (originalMessage != null) { subBuilder.WeakMergeFrom(originalMessage); } if (rawBytes != null) { // We already encountered the message. Parse it now. // TODO(jonskeet): Check this is okay. It's subtly different from the Java, as it doesn't create an input stream from rawBytes. // In fact, why don't we just call MergeFrom(rawBytes)? And what about the extension registry? subBuilder.WeakMergeFrom(rawBytes.CreateCodedInput()); rawBytes = null; } } else { // Unknown extension number. If we already saw data, put it // in rawBytes. if (rawBytes != null) { MergeField(typeId, UnknownField.CreateBuilder().AddLengthDelimited(rawBytes).Build()); rawBytes = null; } } } } else if (tag == WireFormat.MessageSetTag.Message) { if (subBuilder != null) { // We already know the type, so we can parse directly from the input // with no copying. Hooray! input.ReadMessage(subBuilder, extensionRegistry); } else if (input.ReadBytes(ref rawBytes)) { if (typeId != 0) { // We don't know how to parse this. Ignore it. MergeField(typeId, UnknownField.CreateBuilder().AddLengthDelimited(rawBytes).Build()); } } } else { // Unknown tag. Skip it. if (!input.SkipField()) { break; // end of group } } } if (lastTag != WireFormat.MessageSetTag.ItemEnd) { throw InvalidProtocolBufferException.InvalidEndTag(); } if (subBuilder != null) { builder[field] = subBuilder.WeakBuild(); } }
/// <summary> /// Parse a single field from <paramref name="input"/> and merge it /// into this set. /// </summary> /// <param name="tag">The field's tag number, which was already parsed.</param> /// <param name="input">The coded input stream containing the field</param> /// <returns>false if the tag is an "end group" tag, true otherwise</returns> public bool MergeFieldFrom(uint tag, ICodedInputStream input) { if (tag == 0) { input.SkipField(); return(true); } int number = WireFormat.GetTagFieldNumber(tag); switch (WireFormat.GetTagWireType(tag)) { case WireFormat.WireType.Varint: { ulong uint64 = 0; if (input.ReadUInt64(ref uint64)) { GetFieldBuilder(number).AddVarint(uint64); } return(true); } case WireFormat.WireType.Fixed32: { uint uint32 = 0; if (input.ReadFixed32(ref uint32)) { GetFieldBuilder(number).AddFixed32(uint32); } return(true); } case WireFormat.WireType.Fixed64: { ulong uint64 = 0; if (input.ReadFixed64(ref uint64)) { GetFieldBuilder(number).AddFixed64(uint64); } return(true); } case WireFormat.WireType.LengthDelimited: { ByteString bytes = null; if (input.ReadBytes(ref bytes)) { GetFieldBuilder(number).AddLengthDelimited(bytes); } return(true); } case WireFormat.WireType.StartGroup: { Builder subBuilder = CreateBuilder(); #pragma warning disable 0612 input.ReadUnknownGroup(number, subBuilder); #pragma warning restore 0612 GetFieldBuilder(number).AddGroup(subBuilder.Build()); return(true); } case WireFormat.WireType.EndGroup: return(false); default: throw InvalidProtocolBufferException.InvalidWireType(); } }
public override ModUserImg.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); while (input.ReadTag(out num, out str)) { if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(ModUserImg._modUserImgFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = ModUserImg._modUserImgFieldTags[index]; } else { this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } switch (num) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 8: { this.result.hasImgType = input.ReadUInt32(ref this.result.imgType_); continue; } case 0x10: { this.result.hasImgLen = input.ReadUInt32(ref this.result.imgLen_); continue; } case 0x1a: { this.result.hasImgBuf = input.ReadBytes(ref this.result.imgBuf_); continue; } case 0x22: { this.result.hasImgMd5 = input.ReadString(ref this.result.imgMd5_); continue; } case 0x2a: { this.result.hasBigHeadImgUrl = input.ReadString(ref this.result.bigHeadImgUrl_); continue; } case 50: break; default: { if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } this.result.hasSmallHeadImgUrl = input.ReadString(ref this.result.smallHeadImgUrl_); } return(this); }
public override WXMessageP.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { this.PrepareBuilder(); uint num; string text; while (input.ReadTag(out num, out text)) { if (num == 0u && text != null) { int num2 = Array.BinarySearch <string>(WXMessageP._wXMessagePFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { this.ParseUnknownField(input, extensionRegistry, num, text); continue; } num = WXMessageP._wXMessagePFieldTags[num2]; } uint num3 = num; if (num3 <= 42u) { if (num3 <= 18u) { if (num3 == 0u) { throw InvalidProtocolBufferException.InvalidTag(); } if (num3 == 8u) { this.result.hasType = input.ReadUInt32(ref this.result.type_); continue; } if (num3 == 18u) { this.result.hasTitle = input.ReadString(ref this.result.title_); continue; } } else { if (num3 == 26u) { this.result.hasDescription = input.ReadString(ref this.result.description_); continue; } if (num3 == 34u) { this.result.hasThumbData = input.ReadBytes(ref this.result.thumbData_); continue; } if (num3 == 42u) { WXEmojiMessageP.Builder builder = WXEmojiMessageP.CreateBuilder(); if (this.result.hasEmojiMessage) { builder.MergeFrom(this.EmojiMessage); } input.ReadMessage(builder, extensionRegistry); this.EmojiMessage = builder.BuildPartial(); continue; } } } else if (num3 <= 66u) { if (num3 == 50u) { WXFileMessageP.Builder builder2 = WXFileMessageP.CreateBuilder(); if (this.result.hasFileMessage) { builder2.MergeFrom(this.FileMessage); } input.ReadMessage(builder2, extensionRegistry); this.FileMessage = builder2.BuildPartial(); continue; } if (num3 == 58u) { WXImageMessageP.Builder builder3 = WXImageMessageP.CreateBuilder(); if (this.result.hasImageMessage) { builder3.MergeFrom(this.ImageMessage); } input.ReadMessage(builder3, extensionRegistry); this.ImageMessage = builder3.BuildPartial(); continue; } if (num3 == 66u) { WXMusicMessageP.Builder builder4 = WXMusicMessageP.CreateBuilder(); if (this.result.hasMusicMessage) { builder4.MergeFrom(this.MusicMessage); } input.ReadMessage(builder4, extensionRegistry); this.MusicMessage = builder4.BuildPartial(); continue; } } else if (num3 <= 82u) { if (num3 == 74u) { WXTextMessageP.Builder builder5 = WXTextMessageP.CreateBuilder(); if (this.result.hasTextMessage) { builder5.MergeFrom(this.TextMessage); } input.ReadMessage(builder5, extensionRegistry); this.TextMessage = builder5.BuildPartial(); continue; } if (num3 == 82u) { WXVideoMessageP.Builder builder6 = WXVideoMessageP.CreateBuilder(); if (this.result.hasVideoMessage) { builder6.MergeFrom(this.VideoMessage); } input.ReadMessage(builder6, extensionRegistry); this.VideoMessage = builder6.BuildPartial(); continue; } } else { if (num3 == 90u) { WXWebpageMessageP.Builder builder7 = WXWebpageMessageP.CreateBuilder(); if (this.result.hasWebpageMessage) { builder7.MergeFrom(this.WebpageMessage); } input.ReadMessage(builder7, extensionRegistry); this.WebpageMessage = builder7.BuildPartial(); continue; } if (num3 == 98u) { WXAppExtendMessageP.Builder builder8 = WXAppExtendMessageP.CreateBuilder(); if (this.result.hasAppExtendMessage) { builder8.MergeFrom(this.AppExtendMessage); } input.ReadMessage(builder8, extensionRegistry); this.AppExtendMessage = builder8.BuildPartial(); continue; } } if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, text); } return(this); }
public override objectNGCInstance.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>(objectNGCInstance._objectNGCInstanceFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = objectNGCInstance._objectNGCInstanceFieldTags[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.hasID = input.ReadInt32(ref this.result.iD_); continue; } case 0x12: 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.hasData = input.ReadBytes(ref this.result.data_); } if (unknownFields != null) { this.UnknownFields = unknownFields.Build(); } return(this); }
// Token: 0x06000922 RID: 2338 RVA: 0x00015CA8 File Offset: 0x00013EA8 public override Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { PrepareBuilder(); UnknownFieldSet.Builder builder = null; while (input.ReadTag(out uint num, out string text)) { if (num == 0U && text != null) { int num2 = Array.BinarySearch(_serverNotifyFieldNames, text, StringComparer.Ordinal); if (num2 < 0) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(UnknownFields); } ParseUnknownField(input, builder, extensionRegistry, num, text); continue; } num = _serverNotifyFieldTags[num2]; } if (num <= 8U) { if (num == 0U) { throw InvalidProtocolBufferException.InvalidTag(); } if (num == 8U) { if (input.ReadEnum(ref result.type_, out object obj)) { result.HasType = true; continue; } if (obj is int) { if (builder == null) { builder = UnknownFieldSet.CreateBuilder(UnknownFields); } builder.MergeVarintField(1, (ulong)((long)((int)obj))); continue; } continue; } } else { if (num == 18U) { result.HasInfo = input.ReadString(ref result.info_); continue; } if (num == 26U) { result.HasExtradata = input.ReadBytes(ref result.extradata_); continue; } if (num == 34U) { result.HasSeqId = input.ReadString(ref result.seqId_); continue; } } if (WireFormat.IsEndGroupTag(num)) { if (builder != null) { UnknownFields = builder.Build(); } return(this); } if (builder == null) { builder = UnknownFieldSet.CreateBuilder(UnknownFields); } ParseUnknownField(input, builder, extensionRegistry, num, text); } if (builder != null) { UnknownFields = builder.Build(); } return(this); }
public override BaseRequest.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); while (input.ReadTag(out num, out str)) { if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(BaseRequest._baseRequestFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = BaseRequest._baseRequestFieldTags[index]; } else { this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } switch (num) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 10: { this.result.hasSessionKey = input.ReadBytes(ref this.result.sessionKey_); continue; } case 0x10: { this.result.hasUin = input.ReadUInt32(ref this.result.uin_); continue; } case 0x1a: { this.result.hasDeviceID = input.ReadBytes(ref this.result.deviceID_); continue; } case 0x20: { this.result.hasClientVersion = input.ReadInt32(ref this.result.clientVersion_); continue; } case 0x2a: { this.result.hasDeviceType = input.ReadBytes(ref this.result.deviceType_); continue; } case 0x30: break; default: { if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } this.result.hasScene = input.ReadUInt32(ref this.result.scene_); } return(this); }
public override NewSyncRequest.Builder MergeFrom(ICodedInputStream input, ExtensionRegistry extensionRegistry) { uint num; string str; this.PrepareBuilder(); while (input.ReadTag(out num, out str)) { if ((num == 0) && (str != null)) { int index = Array.BinarySearch <string>(NewSyncRequest._newSyncRequestFieldNames, str, StringComparer.Ordinal); if (index >= 0) { num = NewSyncRequest._newSyncRequestFieldTags[index]; } else { this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } switch (num) { case 0: throw InvalidProtocolBufferException.InvalidTag(); case 10: { CmdList.Builder builder = CmdList.CreateBuilder(); if (this.result.hasOplog) { builder.MergeFrom(this.Oplog); } input.ReadMessage(builder, extensionRegistry); this.Oplog = builder.BuildPartial(); continue; } case 0x10: { this.result.hasSelector = input.ReadUInt32(ref this.result.selector_); continue; } case 0x1a: { SKBuiltinBuffer_t.Builder builder2 = SKBuiltinBuffer_t.CreateBuilder(); if (this.result.hasKeyBuf) { builder2.MergeFrom(this.KeyBuf); } input.ReadMessage(builder2, extensionRegistry); this.KeyBuf = builder2.BuildPartial(); continue; } case 0x20: { this.result.hasScene = input.ReadUInt32(ref this.result.scene_); continue; } case 0x2a: break; default: { if (WireFormat.IsEndGroupTag(num)) { return(this); } this.ParseUnknownField(input, extensionRegistry, num, str); continue; } } this.result.hasDeviceType = input.ReadBytes(ref this.result.deviceType_); //input.ReadString(ref this.result.deviceType_); } return(this); }
/// <summary> /// Called by MergeFieldFrom to parse a MessageSet extension. /// </summary> private void MergeMessageSetExtensionFromCodedStream(ICodedInputStream input, ExtensionRegistry extensionRegistry, IBuilder builder) { MessageDescriptor type = builder.DescriptorForType; // The wire format for MessageSet is: // message MessageSet { // repeated group Item = 1 { // required int32 typeId = 2; // required bytes message = 3; // } // } // "typeId" is the extension's field number. The extension can only be // a message type, where "message" contains the encoded bytes of that // message. // // In practice, we will probably never see a MessageSet item in which // the message appears before the type ID, or where either field does not // appear exactly once. However, in theory such cases are valid, so we // should be prepared to accept them. int typeId = 0; ByteString rawBytes = null; // If we encounter "message" before "typeId" IBuilderLite subBuilder = null; FieldDescriptor field = null; uint lastTag = WireFormat.MessageSetTag.ItemStart; uint tag; string name; while (input.ReadTag(out tag, out name)) { if (tag == 0 && name != null) { if (name == "type_id") { tag = WireFormat.MessageSetTag.TypeID; } else if (name == "message") { tag = WireFormat.MessageSetTag.Message; } } if (tag == 0) { if (input.SkipField()) { continue; //can't merge unknown without field tag } break; } lastTag = tag; if (tag == WireFormat.MessageSetTag.TypeID) { typeId = 0; // Zero is not a valid type ID. if (input.ReadInt32(ref typeId) && typeId != 0) { ExtensionInfo extension = extensionRegistry[type, typeId]; if (extension != null) { field = extension.Descriptor; subBuilder = extension.DefaultInstance.WeakCreateBuilderForType(); IMessageLite originalMessage = (IMessageLite) builder[field]; if (originalMessage != null) { subBuilder.WeakMergeFrom(originalMessage); } if (rawBytes != null) { // We already encountered the message. Parse it now. // TODO(jonskeet): Check this is okay. It's subtly different from the Java, as it doesn't create an input stream from rawBytes. // In fact, why don't we just call MergeFrom(rawBytes)? And what about the extension registry? subBuilder.WeakMergeFrom(rawBytes.CreateCodedInput()); rawBytes = null; } } else { // Unknown extension number. If we already saw data, put it // in rawBytes. if (rawBytes != null) { MergeField(typeId, UnknownField.CreateBuilder().AddLengthDelimited(rawBytes).Build()); rawBytes = null; } } } } else if (tag == WireFormat.MessageSetTag.Message) { if (subBuilder != null) { // We already know the type, so we can parse directly from the input // with no copying. Hooray! input.ReadMessage(subBuilder, extensionRegistry); } else if (input.ReadBytes(ref rawBytes)) { if (typeId != 0) { // We don't know how to parse this. Ignore it. MergeField(typeId, UnknownField.CreateBuilder().AddLengthDelimited(rawBytes).Build()); } } } else { // Unknown tag. Skip it. if (!input.SkipField()) { break; // end of group } } } if (lastTag != WireFormat.MessageSetTag.ItemEnd) { throw InvalidProtocolBufferException.InvalidEndTag(); } if (subBuilder != null) { builder[field] = subBuilder.WeakBuild(); } }
/// <summary> /// Parse a single field from <paramref name="input"/> and merge it /// into this set. /// </summary> /// <param name="tag">The field's tag number, which was already parsed.</param> /// <param name="input">The coded input stream containing the field</param> /// <returns>false if the tag is an "end group" tag, true otherwise</returns> public bool MergeFieldFrom(uint tag, ICodedInputStream input) { if (tag == 0) { input.SkipField(); return true; } int number = WireFormat.GetTagFieldNumber(tag); switch (WireFormat.GetTagWireType(tag)) { case WireFormat.WireType.Varint: { ulong uint64 = 0; if (input.ReadUInt64(ref uint64)) { GetFieldBuilder(number).AddVarint(uint64); } return true; } case WireFormat.WireType.Fixed32: { uint uint32 = 0; if (input.ReadFixed32(ref uint32)) { GetFieldBuilder(number).AddFixed32(uint32); } return true; } case WireFormat.WireType.Fixed64: { ulong uint64 = 0; if (input.ReadFixed64(ref uint64)) { GetFieldBuilder(number).AddFixed64(uint64); } return true; } case WireFormat.WireType.LengthDelimited: { ByteString bytes = null; if (input.ReadBytes(ref bytes)) { GetFieldBuilder(number).AddLengthDelimited(bytes); } return true; } case WireFormat.WireType.StartGroup: { Builder subBuilder = CreateBuilder(); #pragma warning disable 0612 input.ReadUnknownGroup(number, subBuilder); #pragma warning restore 0612 GetFieldBuilder(number).AddGroup(subBuilder.Build()); return true; } case WireFormat.WireType.EndGroup: return false; default: throw InvalidProtocolBufferException.InvalidWireType(); } }