예제 #1
0
            public override SnsObjectDetailResponse.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>(SnsObjectDetailResponse._snsObjectDetailResponseFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = SnsObjectDetailResponse._snsObjectDetailResponseFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseResponse.Builder builder = micromsg.BaseResponse.CreateBuilder();
                        if (this.result.hasBaseResponse)
                        {
                            builder.MergeFrom(this.BaseResponse);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseResponse = builder.BuildPartial();
                        continue;
                    }

                    case 0x12:
                    {
                        SnsObject.Builder builder2 = SnsObject.CreateBuilder();
                        if (this.result.hasObject)
                        {
                            builder2.MergeFrom(this.Object);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.Object = builder2.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #2
0
            public override ModChatRoomTopic.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>(ModChatRoomTopic._modChatRoomTopicFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = ModChatRoomTopic._modChatRoomTopicFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        SKBuiltinString_t.Builder builder = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasChatRoomName)
                        {
                            builder.MergeFrom(this.ChatRoomName);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.ChatRoomName = builder.BuildPartial();
                        continue;
                    }

                    case 0x12:
                    {
                        SKBuiltinString_t.Builder builder2 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasChatRoomTopic)
                        {
                            builder2.MergeFrom(this.ChatRoomTopic);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.ChatRoomTopic = builder2.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #3
0
            public override ShowMessageFromWXReq.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>(ShowMessageFromWXReq._showMessageFromWXReqFieldNames, text, StringComparer.Ordinal);
                        if (num2 < 0)
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, text);
                            continue;
                        }
                        num = ShowMessageFromWXReq._showMessageFromWXReqFieldTags[num2];
                    }
                    uint num3 = num;
                    if (num3 == 0u)
                    {
                        throw InvalidProtocolBufferException.InvalidTag();
                    }
                    if (num3 != 10u)
                    {
                        if (num3 != 18u)
                        {
                            if (WireFormat.IsEndGroupTag(num))
                            {
                                return(this);
                            }
                            this.ParseUnknownField(input, extensionRegistry, num, text);
                        }
                        else
                        {
                            WXMessageP.Builder builder = WXMessageP.CreateBuilder();
                            if (this.result.hasMsg)
                            {
                                builder.MergeFrom(this.Msg);
                            }
                            input.ReadMessage(builder, extensionRegistry);
                            this.Msg = builder.BuildPartial();
                        }
                    }
                    else
                    {
                        BaseReqP.Builder builder2 = BaseReqP.CreateBuilder();
                        if (this.result.hasBase)
                        {
                            builder2.MergeFrom(this.Base);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.Base = builder2.BuildPartial();
                    }
                }
                return(this);
            }
예제 #4
0
            public override SnsObjectOp.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>(SnsObjectOp._snsObjectOpFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = SnsObjectOp._snsObjectOpFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 8:
                    {
                        this.result.hasId = input.ReadUInt64(ref this.result.id_);
                        continue;
                    }

                    case 0x10:
                    {
                        this.result.hasOpType = input.ReadUInt32(ref this.result.opType_);
                        continue;
                    }

                    case 0x1a:
                    {
                        SKBuiltinBuffer_t.Builder builder = SKBuiltinBuffer_t.CreateBuilder();
                        if (this.result.hasExt)
                        {
                            builder.MergeFrom(this.Ext);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.Ext = builder.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #5
0
            public override DelContactMsg.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>(DelContactMsg._delContactMsgFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = DelContactMsg._delContactMsgFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        SKBuiltinString_t.Builder builder = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasUserName)
                        {
                            builder.MergeFrom(this.UserName);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.UserName = builder.BuildPartial();
                        continue;
                    }

                    case 0x10:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasMaxMsgId = input.ReadInt32(ref this.result.maxMsgId_);
                }
                return(this);
            }
예제 #6
0
            public override GetMessageFromWXReq.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>(GetMessageFromWXReq._getMessageFromWXReqFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = GetMessageFromWXReq._getMessageFromWXReqFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        BaseReqP.Builder builder = BaseReqP.CreateBuilder();
                        if (this.result.hasBase)
                        {
                            builder.MergeFrom(this.Base);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.Base = builder.BuildPartial();
                        continue;
                    }

                    case 0x12:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasUsername = input.ReadString(ref this.result.username_);
                }
                return(this);
            }
예제 #7
0
            public override BaseResponse.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>(BaseResponse._baseResponseFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = BaseResponse._baseResponseFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 8:
                    {
                        this.result.hasRet = input.ReadInt32(ref this.result.ret_);
                        continue;
                    }

                    case 0x12:
                    {
                        SKBuiltinString_t.Builder builder = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasErrMsg)
                        {
                            builder.MergeFrom(this.ErrMsg);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.ErrMsg = builder.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #8
0
            public override AdditionalContactList.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>(AdditionalContactList._additionalContactListFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = AdditionalContactList._additionalContactListFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        LinkedinContactItem.Builder builder = LinkedinContactItem.CreateBuilder();
                        if (this.result.hasLinkedinContactItem)
                        {
                            builder.MergeFrom(this.LinkedinContactItem);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.LinkedinContactItem = builder.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #9
0
            public override SendAppMsgRequest.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>(SendAppMsgRequest._sendAppMsgRequestFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = SendAppMsgRequest._sendAppMsgRequestFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseRequest.Builder builder = micromsg.BaseRequest.CreateBuilder();
                        if (this.result.hasBaseRequest)
                        {
                            builder.MergeFrom(this.BaseRequest);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseRequest = builder.BuildPartial();
                        continue;
                    }

                    case 0x12:
                    {
                        AppMsg.Builder builder2 = AppMsg.CreateBuilder();
                        if (this.result.hasMsg)
                        {
                            builder2.MergeFrom(this.Msg);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.Msg = builder2.BuildPartial();
                        continue;
                    }

                    case 0x1a:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasCommentUrl = input.ReadString(ref this.result.commentUrl_);
                }
                return(this);
            }
예제 #10
0
            public override SnsUserPageResponse.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>(SnsUserPageResponse._snsUserPageResponseFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = SnsUserPageResponse._snsUserPageResponseFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0x12:
                    {
                        this.result.hasFirstPageMd5 = input.ReadString(ref this.result.firstPageMd5_);
                        continue;
                    }

                    case 0x18:
                    {
                        this.result.hasObjectCount = input.ReadUInt32(ref this.result.objectCount_);
                        continue;
                    }

                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseResponse.Builder builder = micromsg.BaseResponse.CreateBuilder();
                        if (this.result.hasBaseResponse)
                        {
                            builder.MergeFrom(this.BaseResponse);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseResponse = builder.BuildPartial();
                        continue;
                    }

                    case 0x22:
                    {
                        input.ReadMessageArray <SnsObject>(num, str, this.result.objectList_, SnsObject.DefaultInstance, extensionRegistry);
                        continue;
                    }

                    case 40:
                    {
                        this.result.hasObjectTotalCount = input.ReadUInt32(ref this.result.objectTotalCount_);
                        continue;
                    }

                    case 50:
                    {
                        micromsg.SnsUserInfo.Builder builder2 = micromsg.SnsUserInfo.CreateBuilder();
                        if (this.result.hasSnsUserInfo)
                        {
                            builder2.MergeFrom(this.SnsUserInfo);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.SnsUserInfo = builder2.BuildPartial();
                        continue;
                    }

                    case 0x38:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasNewRequestTime = input.ReadUInt32(ref this.result.newRequestTime_);
                }
                return(this);
            }
예제 #11
0
            /// <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();
                }
            }
예제 #12
0
            /// <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);
            }
예제 #13
0
            public override BindOpMobileResponse.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>(BindOpMobileResponse._bindOpMobileResponseFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = BindOpMobileResponse._bindOpMobileResponseFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseResponse.Builder builder = micromsg.BaseResponse.CreateBuilder();
                        if (this.result.hasBaseResponse)
                        {
                            builder.MergeFrom(this.BaseResponse);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseResponse = builder.BuildPartial();
                        continue;
                    }

                    case 0x12:
                    {
                        this.result.hasTicket = input.ReadString(ref this.result.ticket_);
                        continue;
                    }

                    case 0x2a:
                    {
                        this.result.hasPwd = input.ReadString(ref this.result.pwd_);
                        continue;
                    }

                    case 50:
                    {
                        this.result.hasUsername = input.ReadString(ref this.result.username_);
                        continue;
                    }

                    case 0x1a:
                    {
                        this.result.hasSmsNo = input.ReadString(ref this.result.smsNo_);
                        continue;
                    }

                    case 0x20:
                    {
                        this.result.hasNeedSetPwd = input.ReadUInt32(ref this.result.needSetPwd_);
                        continue;
                    }

                    case 0x4a:
                    {
                        micromsg.NetworkControl.Builder builder4 = micromsg.NetworkControl.CreateBuilder();
                        if (this.result.hasNetworkControl)
                        {
                            builder4.MergeFrom(this.NetworkControl);
                        }
                        input.ReadMessage(builder4, extensionRegistry);
                        this.NetworkControl = builder4.BuildPartial();
                        continue;
                    }

                    case 0x52:
                    {
                        this.result.hasAuthTicket = input.ReadString(ref this.result.authTicket_);
                        continue;
                    }

                    case 0x3a:
                    {
                        HostList.Builder builder2 = HostList.CreateBuilder();
                        if (this.result.hasNewHostList)
                        {
                            builder2.MergeFrom(this.NewHostList);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.NewHostList = builder2.BuildPartial();
                        continue;
                    }

                    case 0x42:
                    {
                        micromsg.BuiltinIPList.Builder builder3 = micromsg.BuiltinIPList.CreateBuilder();
                        if (this.result.hasBuiltinIPList)
                        {
                            builder3.MergeFrom(this.BuiltinIPList);
                        }
                        input.ReadMessage(builder3, extensionRegistry);
                        this.BuiltinIPList = builder3.BuildPartial();
                        continue;
                    }

                    case 0x58:
                    {
                        this.result.hasSafeDevice = input.ReadUInt32(ref this.result.safeDevice_);
                        continue;
                    }

                    case 0x62:
                    {
                        this.result.hasMainAcct = input.ReadString(ref this.result.mainAcct_);
                        continue;
                    }

                    case 0x68:
                    {
                        this.result.hasMainAcctType = input.ReadUInt32(ref this.result.mainAcctType_);
                        continue;
                    }

                    case 0x72:
                    {
                        micromsg.SafeDeviceList.Builder builder5 = micromsg.SafeDeviceList.CreateBuilder();
                        if (this.result.hasSafeDeviceList)
                        {
                            builder5.MergeFrom(this.SafeDeviceList);
                        }
                        input.ReadMessage(builder5, extensionRegistry);
                        this.SafeDeviceList = builder5.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #14
0
 // Token: 0x060009D0 RID: 2512 RVA: 0x0001762C File Offset: 0x0001582C
 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(_transparentFieldNames, text, StringComparer.Ordinal);
             if (num2 < 0)
             {
                 if (builder == null)
                 {
                     builder = UnknownFieldSet.CreateBuilder(UnknownFields);
                 }
                 ParseUnknownField(input, builder, extensionRegistry, num, text);
                 continue;
             }
             num = _transparentFieldTags[num2];
         }
         if (num <= 42U)
         {
             if (num <= 18U)
             {
                 if (num == 0U)
                 {
                     throw InvalidProtocolBufferException.InvalidTag();
                 }
                 if (num == 10U)
                 {
                     result.HasId = input.ReadString(ref result.id_);
                     continue;
                 }
                 if (num == 18U)
                 {
                     result.HasAction = input.ReadString(ref result.action_);
                     continue;
                 }
             }
             else
             {
                 if (num == 26U)
                 {
                     result.HasTaskId = input.ReadString(ref result.taskId_);
                     continue;
                 }
                 if (num == 34U)
                 {
                     result.HasAppKey = input.ReadString(ref result.appKey_);
                     continue;
                 }
                 if (num == 42U)
                 {
                     result.HasAppId = input.ReadString(ref result.appId_);
                     continue;
                 }
             }
         }
         else if (num <= 66U)
         {
             if (num == 50U)
             {
                 result.HasMessageId = input.ReadString(ref result.messageId_);
                 continue;
             }
             if (num == 58U)
             {
                 PushInfo.Builder builder2 = PushInfo.CreateBuilder();
                 if (result.HasPushInfo)
                 {
                     builder2.MergeFrom(PushInfo);
                 }
                 input.ReadMessage(builder2, extensionRegistry);
                 PushInfo = builder2.BuildPartial();
                 continue;
             }
             if (num == 66U)
             {
                 input.ReadMessageArray(num, text, result.actionChain_, ActionChain.DefaultInstance, extensionRegistry);
                 continue;
             }
         }
         else if (num <= 80U)
         {
             if (num == 74U)
             {
                 input.ReadStringArray(num, text, result.condition_);
                 continue;
             }
             if (num == 80U)
             {
                 result.HasTemplateId = input.ReadInt32(ref result.templateId_);
                 continue;
             }
         }
         else
         {
             if (num == 90U)
             {
                 result.HasTaskGroupId = input.ReadString(ref result.taskGroupId_);
                 continue;
             }
             if (num == 98U)
             {
                 SmsInfo.Builder builder3 = SmsInfo.CreateBuilder();
                 if (result.HasSmsInfo)
                 {
                     builder3.MergeFrom(SmsInfo);
                 }
                 input.ReadMessage(builder3, extensionRegistry);
                 SmsInfo = builder3.BuildPartial();
                 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);
 }
예제 #15
0
            public override HongBaoReq.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>(HongBaoReq._hongBaoReqFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = HongBaoReq._hongBaoReqFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        BaseRequest.Builder builder = BaseRequest.CreateBuilder();
                        if (this.result.hasBaseRequest)
                        {
                            builder.MergeFrom(this.BaseRequest);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseRequest = builder.BuildPartial();
                        continue;
                    }

                    case 0x10:
                    {
                        this.result.hasCgiCmd = input.ReadUInt32(ref this.result.cgiCmd_);
                        continue;
                    }

                    case 0x18:
                    {
                        this.result.hasOutPutType = input.ReadUInt32(ref this.result.outPutType_);
                        continue;
                    }

                    case 0x22:
                    {
                        SKBuiltinBuffer_t.Builder builder2 = SKBuiltinBuffer_t.CreateBuilder();
                        if (this.result.hasReqText)
                        {
                            builder2.MergeFrom(this.ReqText);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.ReqText = builder2.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
            public override InviteChatRoomMemberRequest.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>(InviteChatRoomMemberRequest._inviteChatRoomMemberRequestFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = InviteChatRoomMemberRequest._inviteChatRoomMemberRequestFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseRequest.Builder builder = micromsg.BaseRequest.CreateBuilder();
                        if (this.result.hasBaseRequest)
                        {
                            builder.MergeFrom(this.BaseRequest);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseRequest = builder.BuildPartial();
                        continue;
                    }

                    case 0x10:
                    {
                        this.result.hasMemberCount = input.ReadUInt32(ref this.result.memberCount_);
                        continue;
                    }

                    case 0x1a:
                    {
                        input.ReadMessageArray <MemberReq>(num, str, this.result.memberList_, MemberReq.DefaultInstance, extensionRegistry);
                        continue;
                    }

                    case 0x22:
                    {
                        SKBuiltinString_t.Builder builder2 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasChatRoomName)
                        {
                            builder2.MergeFrom(this.ChatRoomName);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.ChatRoomName = builder2.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #17
0
            // Token: 0x060012EC RID: 4844 RVA: 0x000434D4 File Offset: 0x000416D4
            public override objectSleepingAvatar.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>(objectSleepingAvatar._objectSleepingAvatarFieldNames, text, StringComparer.Ordinal);
                        if (num2 < 0)
                        {
                            if (builder == null)
                            {
                                builder = UnknownFieldSet.CreateBuilder(this.UnknownFields);
                            }
                            this.ParseUnknownField(input, builder, extensionRegistry, num, text);
                            continue;
                        }
                        num = objectSleepingAvatar._objectSleepingAvatarFieldTags[num2];
                    }
                    uint num3 = num;
                    if (num3 == 0u)
                    {
                        throw InvalidProtocolBufferException.InvalidTag();
                    }
                    if (num3 != 8u)
                    {
                        if (num3 != 16u)
                        {
                            if (num3 != 24u)
                            {
                                if (num3 != 32u)
                                {
                                    if (num3 != 40u)
                                    {
                                        if (num3 != 50u)
                                        {
                                            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
                                        {
                                            Vitals.Builder builder2 = Vitals.CreateBuilder();
                                            if (this.result.hasVitals)
                                            {
                                                builder2.MergeFrom(this.Vitals);
                                            }
                                            input.ReadMessage(builder2, extensionRegistry);
                                            this.Vitals = builder2.BuildPartial();
                                        }
                                    }
                                    else
                                    {
                                        this.result.hasTimestamp = input.ReadInt32(ref this.result.timestamp_);
                                    }
                                }
                                else
                                {
                                    this.result.hasHeadArmor = input.ReadInt32(ref this.result.headArmor_);
                                }
                            }
                            else
                            {
                                this.result.hasTorsoArmor = input.ReadInt32(ref this.result.torsoArmor_);
                            }
                        }
                        else
                        {
                            this.result.hasLegArmor = input.ReadInt32(ref this.result.legArmor_);
                        }
                    }
                    else
                    {
                        this.result.hasFootArmor = input.ReadInt32(ref this.result.footArmor_);
                    }
                }
                if (builder != null)
                {
                    this.UnknownFields = builder.Build();
                }
                return(this);
            }
예제 #18
0
            public override DownloadVideoRequest.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>(DownloadVideoRequest._downloadVideoRequestFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = DownloadVideoRequest._downloadVideoRequestFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        BaseRequest.Builder builder = BaseRequest.CreateBuilder();
                        if (this.result.hasBaseRequest)
                        {
                            builder.MergeFrom(this.BaseRequest);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseRequest = builder.BuildPartial();
                        continue;
                    }

                    case 0x10:
                    {
                        this.result.hasMsgId = input.ReadUInt32(ref this.result.msgId_);
                        continue;
                    }

                    case 0x18:
                    {
                        this.result.hasTotalLen = input.ReadUInt32(ref this.result.totalLen_);
                        continue;
                    }

                    case 0x20:
                    {
                        this.result.hasStartPos = input.ReadUInt32(ref this.result.startPos_);
                        continue;
                    }

                    case 40:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasNetworkEnv = input.ReadUInt32(ref this.result.networkEnv_);
                }
                return(this);
            }
예제 #19
0
            public override NewSyncResponse.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>(NewSyncResponse._newSyncResponseFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = NewSyncResponse._newSyncResponseFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 8:
                    {
                        this.result.hasRet = input.ReadInt32(ref this.result.ret_);
                        continue;
                    }

                    case 0x12:
                    {
                        CmdList.Builder builder = CmdList.CreateBuilder();
                        if (this.result.hasCmdList)
                        {
                            builder.MergeFrom(this.CmdList);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.CmdList = builder.BuildPartial();
                        continue;
                    }

                    case 0x18:
                    {
                        this.result.hasContinueFlag = input.ReadUInt32(ref this.result.continueFlag_);
                        continue;
                    }

                    case 0x22:
                    {
                        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 40:
                    {
                        this.result.hasStatus = input.ReadUInt32(ref this.result.status_);
                        continue;
                    }

                    case 0x30:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasOnlineVersion = input.ReadUInt32(ref this.result.onlineVersion_);
                }
                return(this);
            }
예제 #20
0
 // Token: 0x0600095E RID: 2398 RVA: 0x0001654C File Offset: 0x0001474C
 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(_oSMessageFieldNames, text, StringComparer.Ordinal);
             if (num2 < 0)
             {
                 if (builder == null)
                 {
                     builder = UnknownFieldSet.CreateBuilder(UnknownFields);
                 }
                 ParseUnknownField(input, builder, extensionRegistry, num, text);
                 continue;
             }
             num = _oSMessageFieldTags[num2];
         }
         if (num <= 34U)
         {
             if (num <= 16U)
             {
                 if (num == 0U)
                 {
                     throw InvalidProtocolBufferException.InvalidTag();
                 }
                 if (num == 16U)
                 {
                     result.HasIsOffline = input.ReadBool(ref result.isOffline_);
                     continue;
                 }
             }
             else
             {
                 if (num == 24U)
                 {
                     result.HasOfflineExpireTime = input.ReadInt64(ref result.offlineExpireTime_);
                     continue;
                 }
                 if (num == 34U)
                 {
                     Transparent.Builder builder2 = Transparent.CreateBuilder();
                     if (result.HasTransparent)
                     {
                         builder2.MergeFrom(Transparent);
                     }
                     input.ReadMessage(builder2, extensionRegistry);
                     Transparent = builder2.BuildPartial();
                     continue;
                 }
             }
         }
         else if (num <= 48U)
         {
             if (num == 42U)
             {
                 result.HasExtraData = input.ReadString(ref result.extraData_);
                 continue;
             }
             if (num == 48U)
             {
                 result.HasMsgType = input.ReadInt32(ref result.msgType_);
                 continue;
             }
         }
         else
         {
             if (num == 56U)
             {
                 result.HasMsgTraceFlag = input.ReadInt32(ref result.msgTraceFlag_);
                 continue;
             }
             if (num == 64U)
             {
                 result.HasPriority = input.ReadInt32(ref result.priority_);
                 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);
 }
예제 #21
0
            public override Transparent.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>(Transparent._transparentFieldNames, fieldName, (IComparer <string>)StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            fieldTag = Transparent._transparentFieldTags[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.hasId = input.ReadString(ref this.result.id_);
                        continue;

                    case 18:
                        this.result.hasAction = input.ReadString(ref this.result.action_);
                        continue;

                    case 26:
                        this.result.hasTaskId = input.ReadString(ref this.result.taskId_);
                        continue;

                    case 34:
                        this.result.hasAppKey = input.ReadString(ref this.result.appKey_);
                        continue;

                    case 42:
                        this.result.hasAppId = input.ReadString(ref this.result.appId_);
                        continue;

                    case 50:
                        this.result.hasMessageId = input.ReadString(ref this.result.messageId_);
                        continue;

                    case 58:
                        PushInfo.Builder builder1 = PushInfo.CreateBuilder();
                        if (this.result.hasPushInfo)
                        {
                            builder1.MergeFrom(this.PushInfo);
                        }
                        input.ReadMessage((IBuilderLite)builder1, extensionRegistry);
                        this.PushInfo = builder1.BuildPartial();
                        continue;

                    case 66:
                        input.ReadMessageArray <ActionChain>(fieldTag, fieldName, (ICollection <ActionChain>) this.result.actionChain_, ActionChain.DefaultInstance, extensionRegistry);
                        continue;

                    case 74:
                        input.ReadStringArray(fieldTag, fieldName, (ICollection <string>) this.result.condition_);
                        continue;

                    case 80:
                        this.result.hasTemplateId = input.ReadInt32(ref this.result.templateId_);
                        continue;

                    case 90:
                        this.result.hasTaskGroupId = input.ReadString(ref this.result.taskGroupId_);
                        continue;

                    case 98:
                        SmsInfo.Builder builder2 = SmsInfo.CreateBuilder();
                        if (this.result.hasSmsInfo)
                        {
                            builder2.MergeFrom(this.SmsInfo);
                        }
                        input.ReadMessage((IBuilderLite)builder2, extensionRegistry);
                        this.SmsInfo = builder2.BuildPartial();
                        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);
        }
예제 #23
0
            public override SendAuthResp.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>(SendAuthResp._sendAuthRespFieldNames, text, StringComparer.Ordinal);
                        if (num2 < 0)
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, text);
                            continue;
                        }
                        num = SendAuthResp._sendAuthRespFieldTags[num2];
                    }
                    uint num3 = num;
                    if (num3 <= 10u)
                    {
                        if (num3 == 0u)
                        {
                            throw InvalidProtocolBufferException.InvalidTag();
                        }
                        if (num3 == 10u)
                        {
                            BaseRespP.Builder builder = BaseRespP.CreateBuilder();
                            if (this.result.hasBase)
                            {
                                builder.MergeFrom(this.Base);
                            }
                            input.ReadMessage(builder, extensionRegistry);
                            this.Base = builder.BuildPartial();
                            continue;
                        }
                    }
                    else
                    {
                        if (num3 == 18u)
                        {
                            this.result.hasCode = input.ReadString(ref this.result.code_);
                            continue;
                        }
                        if (num3 == 26u)
                        {
                            this.result.hasState = input.ReadString(ref this.result.state_);
                            continue;
                        }
                        if (num3 == 34u)
                        {
                            this.result.hasUrl = input.ReadString(ref this.result.url_);
                            continue;
                        }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, text);
                }
                return(this);
            }
예제 #24
0
            public override TenPayResponse.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>(TenPayResponse._tenPayResponseFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = TenPayResponse._tenPayResponseFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0x12:
                    {
                        SKBuiltinBuffer_t.Builder builder2 = SKBuiltinBuffer_t.CreateBuilder();
                        if (this.result.hasRetText)
                        {
                            builder2.MergeFrom(this.RetText);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.RetText = builder2.BuildPartial();
                        continue;
                    }

                    case 0x18:
                    {
                        this.result.hasPlatRet = input.ReadInt32(ref this.result.platRet_);
                        continue;
                    }

                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        BaseResponse.Builder builder = BaseResponse.CreateBuilder();
                        if (this.result.hasBaseResponse)
                        {
                            builder.MergeFrom(this.BaseResponse);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseResponse = builder.BuildPartial();
                        continue;
                    }

                    case 0x22:
                    {
                        this.result.hasPlatMsg = input.ReadString(ref this.result.platMsg_);
                        continue;
                    }

                    case 40:
                    {
                        this.result.hasCgiCmdid = input.ReadInt32(ref this.result.cgiCmdid_);
                        continue;
                    }

                    case 0x30:
                    {
                        this.result.hasTenpayErrType = input.ReadInt32(ref this.result.tenpayErrType_);
                        continue;
                    }

                    case 0x3a:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasTenpayErrMsg = input.ReadString(ref this.result.tenpayErrMsg_);
                }
                return(this);
            }
예제 #25
0
            public override GetMsgImgRequest.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>(GetMsgImgRequest._getMsgImgRequestFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = GetMsgImgRequest._getMsgImgRequestFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0x10:
                    {
                        this.result.hasMsgId = input.ReadUInt32(ref this.result.msgId_);
                        continue;
                    }

                    case 0x1a:
                    {
                        SKBuiltinString_t.Builder builder2 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasFromUserName)
                        {
                            builder2.MergeFrom(this.FromUserName);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.FromUserName = builder2.BuildPartial();
                        continue;
                    }

                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseRequest.Builder builder = micromsg.BaseRequest.CreateBuilder();
                        if (this.result.hasBaseRequest)
                        {
                            builder.MergeFrom(this.BaseRequest);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseRequest = builder.BuildPartial();
                        continue;
                    }

                    case 0x22:
                    {
                        SKBuiltinString_t.Builder builder3 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasToUserName)
                        {
                            builder3.MergeFrom(this.ToUserName);
                        }
                        input.ReadMessage(builder3, extensionRegistry);
                        this.ToUserName = builder3.BuildPartial();
                        continue;
                    }

                    case 40:
                    {
                        this.result.hasTotalLen = input.ReadUInt32(ref this.result.totalLen_);
                        continue;
                    }

                    case 0x30:
                    {
                        this.result.hasStartPos = input.ReadUInt32(ref this.result.startPos_);
                        continue;
                    }

                    case 0x38:
                    {
                        this.result.hasDataLen = input.ReadUInt32(ref this.result.dataLen_);
                        continue;
                    }

                    case 0x40:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasCompressType = input.ReadUInt32(ref this.result.compressType_);
                }
                return(this);
            }
예제 #26
0
            public override SnsTimeLineRequest.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>(SnsTimeLineRequest._snsTimeLineRequestFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = SnsTimeLineRequest._snsTimeLineRequestFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseRequest.Builder builder = micromsg.BaseRequest.CreateBuilder();
                        if (this.result.hasBaseRequest)
                        {
                            builder.MergeFrom(this.BaseRequest);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseRequest = builder.BuildPartial();
                        continue;
                    }

                    case 0x12:
                    {
                        this.result.hasFirstPageMd5 = input.ReadString(ref this.result.firstPageMd5_);
                        continue;
                    }

                    case 0x18:
                    {
                        this.result.hasMaxId = input.ReadUInt64(ref this.result.maxId_);
                        continue;
                    }

                    case 0x20:
                    {
                        this.result.hasMinFilterId = input.ReadUInt64(ref this.result.minFilterId_);
                        continue;
                    }

                    case 40:
                        break;

                    default:
                    {
                        if (WireFormat.IsEndGroupTag(num))
                        {
                            return(this);
                        }
                        this.ParseUnknownField(input, extensionRegistry, num, str);
                        continue;
                    }
                    }
                    this.result.hasLastRequestTime = input.ReadUInt32(ref this.result.lastRequestTime_);
                }
                return(this);
            }
예제 #27
0
            public override GetA8KeyResp.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>(GetA8KeyResp._getA8KeyRespFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = GetA8KeyResp._getA8KeyRespFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0x12:
                    {
                        this.result.hasFullURL = input.ReadString(ref this.result.fullURL_);
                        continue;
                    }

                    case 0x1a:
                    {
                        this.result.hasA8Key = input.ReadString(ref this.result.a8Key_);
                        continue;
                    }

                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseResponse.Builder builder = micromsg.BaseResponse.CreateBuilder();
                        if (this.result.hasBaseResponse)
                        {
                            builder.MergeFrom(this.BaseResponse);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseResponse = builder.BuildPartial();
                        continue;
                    }

                    case 0x20:
                    {
                        this.result.hasActionCode = input.ReadUInt32(ref this.result.actionCode_);
                        continue;
                    }

                    case 0x2a:
                    {
                        this.result.hasTitle = input.ReadString(ref this.result.title_);
                        continue;
                    }

                    case 50:
                    {
                        this.result.hasContent = input.ReadString(ref this.result.content_);
                        continue;
                    }

                    case 0x3a:
                    {
                        JSAPIPermissionBitSet.Builder builder2 = JSAPIPermissionBitSet.CreateBuilder();
                        if (this.result.hasJSAPIPermission)
                        {
                            builder2.MergeFrom(this.JSAPIPermission);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.JSAPIPermission = builder2.BuildPartial();
                        continue;
                    }

                    case 0x42:
                    {
                        micromsg.GeneralControlBitSet.Builder builder3 = micromsg.GeneralControlBitSet.CreateBuilder();
                        if (this.result.hasGeneralControlBitSet)
                        {
                            builder3.MergeFrom(this.GeneralControlBitSet);
                        }
                        input.ReadMessage(builder3, extensionRegistry);
                        this.GeneralControlBitSet = builder3.BuildPartial();
                        continue;
                    }
                    }
                    if (WireFormat.IsEndGroupTag(num))
                    {
                        return(this);
                    }
                    this.ParseUnknownField(input, extensionRegistry, num, str);
                }
                return(this);
            }
예제 #28
0
            public override CreateChatRoomResponse.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>(CreateChatRoomResponse._createChatRoomResponseFieldNames, str, StringComparer.Ordinal);
                        if (index >= 0)
                        {
                            num = CreateChatRoomResponse._createChatRoomResponseFieldTags[index];
                        }
                        else
                        {
                            this.ParseUnknownField(input, extensionRegistry, num, str);
                            continue;
                        }
                    }
                    switch (num)
                    {
                    case 0x12:
                    {
                        SKBuiltinString_t.Builder builder2 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasTopic)
                        {
                            builder2.MergeFrom(this.Topic);
                        }
                        input.ReadMessage(builder2, extensionRegistry);
                        this.Topic = builder2.BuildPartial();
                        continue;
                    }

                    case 0x1a:
                    {
                        SKBuiltinString_t.Builder builder3 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasPYInitial)
                        {
                            builder3.MergeFrom(this.PYInitial);
                        }
                        input.ReadMessage(builder3, extensionRegistry);
                        this.PYInitial = builder3.BuildPartial();
                        continue;
                    }

                    case 0x22:
                    {
                        SKBuiltinString_t.Builder builder4 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasQuanPin)
                        {
                            builder4.MergeFrom(this.QuanPin);
                        }
                        input.ReadMessage(builder4, extensionRegistry);
                        this.QuanPin = builder4.BuildPartial();
                        continue;
                    }

                    case 0:
                        throw InvalidProtocolBufferException.InvalidTag();

                    case 10:
                    {
                        micromsg.BaseResponse.Builder builder = micromsg.BaseResponse.CreateBuilder();
                        if (this.result.hasBaseResponse)
                        {
                            builder.MergeFrom(this.BaseResponse);
                        }
                        input.ReadMessage(builder, extensionRegistry);
                        this.BaseResponse = builder.BuildPartial();
                        continue;
                    }

                    case 40:
                    {
                        this.result.hasMemberCount = input.ReadUInt32(ref this.result.memberCount_);
                        continue;
                    }

                    case 50:
                    {
                        input.ReadMessageArray <MemberResp>(num, str, this.result.memberList_, MemberResp.DefaultInstance, extensionRegistry);
                        continue;
                    }

                    case 0x3a:
                    {
                        SKBuiltinString_t.Builder builder5 = SKBuiltinString_t.CreateBuilder();
                        if (this.result.hasChatRoomName)
                        {
                            builder5.MergeFrom(this.ChatRoomName);
                        }
                        input.ReadMessage(builder5, extensionRegistry);
                        this.ChatRoomName = builder5.BuildPartial();
                        continue;
                    }

                    case 0x42:
                    {
                        SKBuiltinBuffer_t.Builder builder6 = SKBuiltinBuffer_t.CreateBuilder();
                        if (this.result.hasImgBuf)
                        {
                            builder6.MergeFrom(this.ImgBuf);
                        }
                        input.ReadMessage(builder6, extensionRegistry);
                        this.ImgBuf = builder6.BuildPartial();
                        continue;
                    }

                    case 0x4a:
                    {
                        this.result.hasBigHeadImgUrl = input.ReadString(ref this.result.bigHeadImgUrl_);
                        continue;
                    }

                    case 0x52:
                        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);
            }
예제 #29
0
            public override StartMMPBatchTask.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>(StartMMPBatchTask._startMMPBatchTaskFieldNames, text, StringComparer.Ordinal);
                        if (num2 < 0)
                        {
                            if (builder == null)
                            {
                                builder = UnknownFieldSet.CreateBuilder(this.UnknownFields);
                            }
                            this.ParseUnknownField(input, builder, extensionRegistry, num, text);
                            continue;
                        }
                        num = StartMMPBatchTask._startMMPBatchTaskFieldTags[num2];
                    }
                    if (num <= 10u)
                    {
                        if (num == 0u)
                        {
                            throw InvalidProtocolBufferException.InvalidTag();
                        }
                        if (num == 10u)
                        {
                            MMPMessage.Builder builder2 = MMPMessage.CreateBuilder();
                            if (this.result.hasMessage)
                            {
                                builder2.MergeFrom(this.Message);
                            }
                            input.ReadMessage(builder2, extensionRegistry);
                            this.Message = builder2.BuildPartial();
                            continue;
                        }
                    }
                    else
                    {
                        if (num == 16u)
                        {
                            this.result.hasExpire = input.ReadInt64(ref this.result.expire_);
                            continue;
                        }
                        if (num == 26u)
                        {
                            this.result.hasSeqId = input.ReadString(ref this.result.seqId_);
                            continue;
                        }
                        if (num == 34u)
                        {
                            this.result.hasTaskGroupName = input.ReadString(ref this.result.taskGroupName_);
                            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);
            }
예제 #30
0
            /// <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();
                }
            }
예제 #31
0
            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);
            }
예제 #32
0
            /// <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;
            }