System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessHeaderMember C# (CSharp) Method

ProcessHeaderMember() private method

private ProcessHeaderMember ( ParseRecord pr ) : void
pr ParseRecord
return void
        private void ProcessHeaderMember(ParseRecord pr)
        {
            ParseRecord headerPr;

            InternalST.Soap( this,"ProcessHeaderMember HeaderState ",((Enum)headerState).ToString());
            pr.Dump(); 

            if (headerState == HeaderStateEnum.NestedObject)
            {
                // Nested object in Header member
                ParseRecord newPr = pr.Copy();
                headerList.Add(newPr);
                return;
            }

            // Item record
            headerPr = GetPr();
            headerPr.PRparseTypeEnum = InternalParseTypeE.Member;
            headerPr.PRmemberTypeEnum = InternalMemberTypeE.Item;
            headerPr.PRmemberValueEnum = InternalMemberValueE.Nested;
            headerPr.PRisHeaderRoot = true;
            headerArrayLength++;
            headerList.Add(headerPr);

            // Name field
            headerPr = GetPr();
            headerPr.PRparseTypeEnum = InternalParseTypeE.Member;
            headerPr.PRmemberTypeEnum = InternalMemberTypeE.Field;
            headerPr.PRmemberValueEnum = InternalMemberValueE.InlineValue;
            headerPr.PRisHeaderRoot = true;
            headerPr.PRname = "Name";
            headerPr.PRvalue = pr.PRname;
            headerPr.PRdtType = SoapUtil.typeofString;
            headerPr.PRdtTypeCode = InternalPrimitiveTypeE.Invalid;
            headerList.Add(headerPr);

            // Namespace field
            headerPr = GetPr();
            headerPr.PRparseTypeEnum = InternalParseTypeE.Member;
            headerPr.PRmemberTypeEnum = InternalMemberTypeE.Field;
            headerPr.PRmemberValueEnum = InternalMemberValueE.InlineValue;
            headerPr.PRisHeaderRoot = true;
            headerPr.PRname = "HeaderNamespace";
            headerPr.PRvalue = pr.PRxmlNameSpace;
            headerPr.PRdtType = SoapUtil.typeofString;
            headerPr.PRdtTypeCode = InternalPrimitiveTypeE.Invalid;
            headerList.Add(headerPr);

            // MustUnderstand Field
            headerPr = GetPr();
            headerPr.PRparseTypeEnum = InternalParseTypeE.Member;
            headerPr.PRmemberTypeEnum = InternalMemberTypeE.Field;
            headerPr.PRmemberValueEnum = InternalMemberValueE.InlineValue;
            headerPr.PRisHeaderRoot = true;         
            headerPr.PRname = "MustUnderstand";
            if (pr.PRisMustUnderstand)
                headerPr.PRvarValue = true;
            else
                headerPr.PRvarValue = false;            
            headerPr.PRdtType = SoapUtil.typeofBoolean;
            headerPr.PRdtTypeCode = InternalPrimitiveTypeE.Boolean;
            headerList.Add(headerPr);       

            // Value field
            headerPr = GetPr();
            headerPr.PRparseTypeEnum = InternalParseTypeE.Member;
            headerPr.PRmemberTypeEnum = InternalMemberTypeE.Field;
            headerPr.PRmemberValueEnum = pr.PRmemberValueEnum;
            headerPr.PRisHeaderRoot = true;         
            headerPr.PRname = "Value";
            switch (pr.PRmemberValueEnum)
            {
                case InternalMemberValueE.Null:
                    headerList.Add(headerPr);
                    ProcessHeaderMemberEnd(pr);
                    break;
                case InternalMemberValueE.Reference:
                    headerPr.PRidRef = pr.PRidRef;
                    headerList.Add(headerPr);
                    ProcessHeaderMemberEnd(pr);             
                    break;
                case InternalMemberValueE.Nested:
                    headerPr.PRdtType = pr.PRdtType;
                    headerPr.PRdtTypeCode = pr.PRdtTypeCode;
                    headerPr.PRkeyDt = pr.PRkeyDt;
                    headerList.Add(headerPr);
                    // ProcessHeaderMemberEnd will be called from the parse loop
                    break;

                case InternalMemberValueE.InlineValue:
                    headerPr.PRvalue = pr.PRvalue;
                    headerPr.PRvarValue = pr.PRvarValue;
                    headerPr.PRdtType = pr.PRdtType;
                    headerPr.PRdtTypeCode = pr.PRdtTypeCode;
                    headerPr.PRkeyDt = pr.PRkeyDt;
                    headerList.Add(headerPr);
                    ProcessHeaderMemberEnd(pr);             
                    break;
            }
        }