2.2.1.5.2 32-bit Stream Object Header Start
Inheritance: StreamObjectHeader
 /// <summary>
 /// Parse the DataElementIDsFilter structure.
 /// </summary>
 /// <param name="s">An stream containing DataElementIDsFilter structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.QueryChangesFilterDataElementIDs = new bit32StreamObjectHeaderStart();
     this.QueryChangesFilterDataElementIDs.Parse(s);
     this.DataElementIDs = new ExtendedGUIDArray();
     this.DataElementIDs.Parse(s);
 }
 /// <summary>
 /// Parse the AllocateExtendedGUIDRange structure.
 /// </summary>
 /// <param name="s">An stream containing AllocateExtendedGUIDRange structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.AllocateExtendedGUIDRangeResponse = new bit32StreamObjectHeaderStart();
     this.AllocateExtendedGUIDRangeResponse.Parse(s);
     this.GUIDComponent = ReadGuid();
     this.IntegerRangeMin = new CompactUnsigned64bitInteger();
     this.IntegerRangeMin = this.IntegerRangeMin.TryParse(s);
     this.IntegerRangeMax = new CompactUnsigned64bitInteger();
     this.IntegerRangeMax = this.IntegerRangeMax.TryParse(s);
 }
 /// <summary>
 /// Parse the CellError structure.
 /// </summary>
 /// <param name="s">An stream containing CellError structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.ErrorCell = new bit32StreamObjectHeaderStart();
     this.ErrorCell.Parse(s);
     this.ErrorCode = (CellErrorCode)ReadUint();
 }
        /// <summary>
        /// Parse the StreamObjectHeader structure.
        /// </summary>
        /// <param name="s">An stream containing StreamObjectHeader structure.</param>
        public StreamObjectHeader TryParse(Stream s)
        {
            base.Parse(s);
            byte temp = ReadByte();
            s.Position -= 1;
            StreamObjectHeader streamObjectHeader = new StreamObjectHeader();
            if ((temp & 0x03) == 0x0)
            {
                streamObjectHeader = new bit16StreamObjectHeaderStart();
                streamObjectHeader.Parse(s);
            }
            else if ((temp & 0x03) == 0x02)
            {
                streamObjectHeader = new bit32StreamObjectHeaderStart();
                streamObjectHeader.Parse(s);
            }
            else if ((temp & 0x03) == 0x01)
            {
                streamObjectHeader = new bit8StreamObjectHeaderEnd();
                streamObjectHeader.Parse(s);
            }
            else if ((temp & 0x03) == 0x03)
            {
                streamObjectHeader = new bit16StreamObjectHeaderEnd();
                streamObjectHeader.Parse(s);
            }

            return streamObjectHeader;
        }
 /// <summary>
 /// Parse the Win32Error structure.
 /// </summary>
 /// <param name="s">An stream containing Win32Error structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.ErrorWin32 = new bit32StreamObjectHeaderStart();
     this.ErrorWin32.Parse(s);
     this.ErrorCode = ReadUint();
 }
        /// <summary>
        /// Parse the Filter structure.
        /// </summary>
        /// <param name="s">An stream containing Filter structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.queryChangesRequest = new bit32StreamObjectHeaderStart();
            this.queryChangesRequest.Parse(s);
            byte tempByte = ReadByte();
            this.A = GetBits(tempByte, 0, 1);
            this.B = GetBits(tempByte, 1, 1);
            this.C = GetBits(tempByte, 2, 1);
            this.D = GetBits(tempByte, 3, 1);
            this.E = GetBits(tempByte, 4, 1);
            this.F = GetBits(tempByte, 5, 1);
            this.G = GetBits(tempByte, 6, 2);
            this.queryChangesRequestArguments = new bit32StreamObjectHeaderStart();
            this.queryChangesRequestArguments.Parse(s);
            byte tempByte2 = ReadByte();
            this.F2 = GetBits(tempByte2, 0, 1);
            this.G2 = GetBits(tempByte2, 1, 1);
            this.H = GetBits(tempByte2, 2, 6);
            this.CellID = new CellID();
            this.CellID.Parse(s);
            if (ContainsStreamObjectHeader(0x059))
            {
                this.QueryChangesDataConstraints = new bit32StreamObjectHeaderStart();
                this.QueryChangesDataConstraints.Parse(s);
            }
            if (this.QueryChangesDataConstraints != null)
            {
                this.MaxDataElements = new CompactUnsigned64bitInteger();
                this.MaxDataElements = this.MaxDataElements.TryParse(s);
            }

            //TODO£ºThe below two fields are newly add in TD, but they have not conatined in the capture data for sharepoint 2013 server
            //this.MajorVersionNumber = new CompactUnsigned64bitInteger();
            //this.MajorVersionNumber = this.MajorVersionNumber.TryParse(s);
            //this.MinorVersionNumber = new CompactUnsigned64bitInteger();
            //this.MinorVersionNumber = this.MinorVersionNumber.TryParse(s);
            List<Filter> FilterList = new List<Filter>();
            while (ContainsStreamObjectHeader(0x47))
            {
                Filter tempFilter = new Filter();
                FilterList.Add(tempFilter);
            }
            this.QueryChangesFilters = FilterList.ToArray();

            if (ContainsStreamObjectHeader(0x10))
            {
                this.Knowledge = new Knowledge();
                this.Knowledge.Parse(s);
            }
        }
        /// <summary>
        /// Parse the ResponseError structure.
        /// </summary>
        /// <param name="s">An stream containing ResponseError structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.ErrorStart = new bit32StreamObjectHeaderStart();
            this.ErrorStart.Parse(s);
            this.ErrorTypeGUID = ReadGuid();
            if (this.ErrorTypeGUID.ToString().ToUpper() == "5A66A756-87CE-4290-A38B-C61C5BA05A67")
            {
                this.ErrorData = new CellError();
                ((CellError)this.ErrorData).Parse(s);
            }
            else if (this.ErrorTypeGUID.ToString().ToUpper() == "7AFEAEBF-033D-4828-9C31-3977AFE58249")
            {
                this.ErrorData = new ProtocolError();
                ((ProtocolError)this.ErrorData).Parse(s);
            }
            else if (this.ErrorTypeGUID.ToString().ToUpper() == "32C39011-6E39-46C4-AB78-DB41929D679E")
            {
                this.ErrorData = new Win32Error();
                ((Win32Error)this.ErrorData).Parse(s);
            }
            else if (this.ErrorTypeGUID.ToString().ToUpper() == "8454C8F2-E401-405A-A198-A10B6991B56E")
            {
                this.ErrorData = new HRESULTError();
                ((HRESULTError)this.ErrorData).Parse(s);
            }

            if (ContainsStreamObjectHeader(0x04E))
            {
                this.ErrorStringSupplementalInfoStart = new bit32StreamObjectHeaderStart();
                this.ErrorStringSupplementalInfoStart.Parse(s);
                this.ErrorStringSupplementalInfo = new StringItem();
                this.ErrorStringSupplementalInfo.Parse(s);
            }

            if (ContainsStreamObjectStart32BitHeader(0x04D))
            {
                this.ChainedError = new ResponseError();
                this.ChainedError.Parse(s);
            }
            this.ErrorEnd = new bit16StreamObjectHeaderEnd();
            this.ErrorEnd.Parse(s);
        }
        /// <summary>
        /// Parse the FsshttpbRequest structure.
        /// </summary>
        /// <param name="s">An stream containing FsshttpbRequest structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.ProtocolVersion = ReadUshort();
            this.MinimumVersion = ReadUshort();
            this.Signature = ReadUlong();
            this.RequestStart = new bit32StreamObjectHeaderStart();
            this.RequestStart.Parse(s);
            this.UserAgentStart = new bit32StreamObjectHeaderStart();
            this.UserAgentStart.Parse(s);
            if (ContainsStreamObjectHeader(0x055))
            {
                this.UserAgentGUID = new bit32StreamObjectHeaderStart();
                this.UserAgentGUID.Parse(s);
            }
            if (this.UserAgentGUID != null)
            {
                this.GUID = ReadGuid();
            }
            if (ContainsStreamObjectHeader(0x8B))
            {
                this.UserAgentClientAndPlatform = new bit32StreamObjectHeaderStart();
                this.UserAgentClientAndPlatform.Parse(s);
            }

            if (this.UserAgentClientAndPlatform != null)
            {
                this.ClientCount = new CompactUnsigned64bitInteger();
                this.ClientCount = this.ClientCount.TryParse(s);
                this.ClientByteArray = ReadBytes((int)this.ClientCount.GetUint(this.ClientCount));
                this.PlatformCount = new CompactUnsigned64bitInteger();
                this.PlatformCount = this.PlatformCount.TryParse(s);
                this.PlatformByteArray = ReadBytes((int)this.PlatformCount.GetUint(this.PlatformCount));
            }

            this.UserAgentVersion = new bit32StreamObjectHeaderStart();
            this.UserAgentVersion.Parse(s);
            this.Version = ReadUint();
            this.UserAgentEnd = new bit16StreamObjectHeaderEnd();
            this.UserAgentEnd.Parse(s);
            if (ContainsStreamObjectHeader(0x8D))//TODO: This should be 0x88 accroding to TD, but in the capture files of sharepoint server 2013, it is 0x8D.
            {
                this.RequestHashingOptionsDeclaration = new bit32StreamObjectHeaderStart();
                this.RequestHashingOptionsDeclaration.Parse(s);
            }

            if (this.RequestHashingOptionsDeclaration != null)
            {
                // TODO: Missing fields (A B C D E) here, because it's seems these is not containd in capture files of sharepoint server 13.
                this.RequestHasingSchema = new CompactUnsigned64bitInteger();
                this.RequestHasingSchema = this.RequestHasingSchema.TryParse(s);
            }

            if (ContainsStreamObjectHeader(0x042))
            {
                List<FsshttpbSubRequest> tempRequest = new List<FsshttpbSubRequest>();
                do
                {
                    FsshttpbSubRequest subRequest = new FsshttpbSubRequest();
                    subRequest.Parse(s);
                    tempRequest.Add(subRequest);
                    this.SubRequest = tempRequest.ToArray();
                } while (ContainsStreamObjectHeader(0x042));
            }
            if (ContainsStreamObjectHeader(0x15))
            {
                this.DataElementPackage = new DataElementPackage();
                this.DataElementPackage.Parse(s);
            }
            this.RequestEnd = new bit16StreamObjectHeaderEnd();
            this.RequestEnd.Parse(s);
        }
        /// <summary>
        /// Parse the FsshttpbResponse structure.
        /// </summary>
        /// <param name="s">An stream containing FsshttpbResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.ProtocolVersion = ReadUshort();
            this.MinimumVersion = ReadUshort();
            this.Signature = ReadUlong();
            this.ResponseStart = new bit32StreamObjectHeaderStart();
            this.ResponseStart.Parse(s);
            byte tempByte = ReadByte();
            this.Status = GetBits(tempByte, 0, 1);
            this.Reserved = GetBits(tempByte, 1, 7);

            if (this.Status == 0x1)
            {
                this.ResponseError = new ResponseError();
                this.ResponseError.Parse(s);
            }
            else
            {
                if (ContainsStreamObjectHeader(0x15))
                {
                    this.DataElementPackage = new DataElementPackage();
                    this.DataElementPackage.Parse(s);
                }

                if (ContainsStreamObjectHeader(0x041))
                {
                    List<FsshttpbSubResponse> tempResponses = new List<FsshttpbSubResponse>();
                    do
                    {
                        FsshttpbSubResponse subResponse = new FsshttpbSubResponse();
                        subResponse.Parse(s);
                        tempResponses.Add(subResponse);
                        this.SubResponses = tempResponses.ToArray();
                    } while (ContainsStreamObjectHeader(0x041));
                }
            }

            this.ResponseEnd = new bit16StreamObjectHeaderEnd();
            this.ResponseEnd.Parse(s);
        }
 /// <summary>
 /// Parse the FragmentKnowledge structure.
 /// </summary>
 /// <param name="s">An stream containing FragmentKnowledge structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.FragmentKnowledgeStart = new bit32StreamObjectHeaderStart();
     this.FragmentKnowledgeStart.Parse(s);
     List<FragmentKnowledgeEntry> tempFragment = new List<FragmentKnowledgeEntry>();
     do
     {
         FragmentKnowledgeEntry Fragmentknowledge = new FragmentKnowledgeEntry();
         Fragmentknowledge.Parse(s);
         tempFragment.Add(Fragmentknowledge);
     } while (ContainsStreamObjectHeader(0x06C));
     this.FragmentKnowledgeEntries = tempFragment.ToArray();
     this.FragmentKnowledgeEnd = new bit16StreamObjectHeaderEnd();
     this.FragmentKnowledgeEnd.Parse(s);
 }
        /// <summary>
        /// Parse the FragmentKnowledgeEntry structure.
        /// </summary>
        /// <param name="s">An stream containing FragmentKnowledgeEntry structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.FragmentDescriptor = new bit32StreamObjectHeaderStart();
            this.FragmentDescriptor.Parse(s);
            this.ExtendedGUID = new ExtendedGUID();
            this.ExtendedGUID = this.ExtendedGUID.TryParse(s);

            this.DataElementSize = new CompactUnsigned64bitInteger();
            this.DataElementSize = this.DataElementSize.TryParse(s);
            this.DataElementChunkReference = new FileChunkReference();
            this.DataElementChunkReference.Parse(s);
        }
        /// <summary>
        /// Parse the Filter structure.
        /// </summary>
        /// <param name="s">An stream containing Filter structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.QueryChangesFilterStart = new bit32StreamObjectHeaderStart();
            this.QueryChangesFilterStart.Parse(s);
            this.FilterType = (FilterType)ReadByte();
            this.FilterOperation = ReadByte();

            switch (this.FilterType)
            {
                case Parsers.FilterType.AllFilter:
                case Parsers.FilterType.StorageIndexReferencedDataElementsFilter:
                    break;
                case Parsers.FilterType.DataElementIDsFilter:
                    this.QueryChangesFilterData = new DataElementIDsFilter();
                    ((DataElementIDsFilter)this.QueryChangesFilterData).Parse(s);
                    break;
                case Parsers.FilterType.DataElementTypeFilter:
                    this.QueryChangesFilterData = new DataElementTypeFilter();
                    ((DataElementTypeFilter)this.QueryChangesFilterData).Parse(s);
                    break;
                case Parsers.FilterType.CellIDFilter:
                    this.QueryChangesFilterData = new CellIDFilter();
                    ((CellIDFilter)this.QueryChangesFilterData).Parse(s);
                    break;
                case Parsers.FilterType.CustomFilter:
                    this.QueryChangesFilterData = new CustomFilter();
                    ((CustomFilter)this.QueryChangesFilterData).Parse(s);
                    break;
                case Parsers.FilterType.HierarchyFilter:
                    this.QueryChangesFilterData = new HierarchyFilter();
                    ((HierarchyFilter)this.QueryChangesFilterData).Parse(s);
                    break;
                default:
                    throw new Exception("The FilterType is not right.");
            }

            this.QueryChangesFilterEnd = new bit16StreamObjectHeaderEnd();
            this.QueryChangesFilterEnd.Parse(s);

            if (ContainsStreamObjectStart32BitHeader(0x87))
            {
                this.QueryChangesFilterFlags = new bit32StreamObjectHeaderStart();
                this.QueryChangesFilterFlags.Parse(s);
            }
            if (this.QueryChangesFilterFlags != null)
            {
                byte tempByte = ReadByte();
                this.F = GetBits(tempByte, 0, 1);
                this.Reserved = GetBits(tempByte, 1, 7);
            }
        }
 /// <summary>
 /// Parse the DiagnosticRequestOptionInput structure.
 /// </summary>
 /// <param name="s">An stream containing DiagnosticRequestOptionInput structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.DiagnosticRequestOptionInputHeader = new bit32StreamObjectHeaderStart();
     this.DiagnosticRequestOptionInputHeader.Parse(s);
     byte tempByte = ReadByte();
     this.A = GetBits(tempByte, 0, 1);
     this.Reserved = GetBits(tempByte, 1, 7);
 }
 /// <summary>
 /// Parse the DataElementTypeFilter structure.
 /// </summary>
 /// <param name="s">An stream containing DataElementTypeFilter structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.QueryChangesFilterDataElementType = new bit32StreamObjectHeaderStart();
     this.QueryChangesFilterDataElementType.Parse(s);
     this.DataElementType = new CompactUnsigned64bitInteger();
     this.DataElementType = this.DataElementType.TryParse(s);
 }
 /// <summary>
 /// Parse the PutChangesResponse structure.
 /// </summary>
 /// <param name="s">An stream containing PutChangesResponse structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.putChangesResponse = new bit32StreamObjectHeaderStart();
     this.putChangesResponse.Parse(s);
     this.AppliedStorageIndexId = new ExtendedGUID();
     this.AppliedStorageIndexId = this.AppliedStorageIndexId.TryParse(s);
     this.DataElementsAdded = new ExtendedGUIDArray();
     this.DataElementsAdded.Parse(s);
     this.ResultantKnowledge = new Knowledge();
     this.ResultantKnowledge.Parse(s);
     this.DiagnosticRequestOptionOutput = new DiagnosticRequesOptionOutput();
     this.DiagnosticRequestOptionOutput.Parse(s);
 }
        /// <summary>
        /// Parse the FsshttpbSubRequests structure.
        /// </summary>
        /// <param name="s">An stream containing FsshttpbSubRequests structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.SubRequestStart = new bit32StreamObjectHeaderStart();
            this.SubRequestStart.Parse(s);
            this.RequestID = new CompactUnsigned64bitInteger();
            this.RequestID = this.RequestID.TryParse(s);
            this.RequestType = new CompactUnsigned64bitInteger();
            this.RequestType = this.RequestType.TryParse(s);
            this.Priority = new CompactUnsigned64bitInteger();
            this.Priority = this.Priority.TryParse(s);
            if (ContainsStreamObjectHeader(0x83))
            {
                this.TargetPartitionId = new TargetPartitionId();
                this.TargetPartitionId.Parse(s);
            }

            switch (RequestType.GetUint(RequestType))
            {
                case 0x01:
                    this.SubRequestData = new QueryAccessRequest();
                    break;
                case 0x02:
                    this.SubRequestData = new QueryChangesRequest();
                    ((QueryChangesRequest)this.SubRequestData).Parse(s);
                    break;
                case 0x05:
                    this.SubRequestData = new PutChangesRequest();
                    ((PutChangesRequest)this.SubRequestData).Parse(s);
                    break;
                case 0x0B:
                    this.SubRequestData = new AllocateExtendedGUIDRangeRequest();
                    ((AllocateExtendedGUIDRangeRequest)this.SubRequestData).Parse(s);
                    break;
                default:
                    throw new Exception("The RequestType is not right.");
            }
            this.SubRequestEnd = new bit16StreamObjectHeaderEnd();
            this.SubRequestEnd.Parse(s);
        }
 /// <summary>
 /// Parse the QueryAccessResponse structure.
 /// </summary>
 /// <param name="s">An stream containing QueryAccessResponse structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.ReadAccessResponseStart = new bit32StreamObjectHeaderStart();
     this.ReadAccessResponseStart.Parse(s);
     this.ReadAccessResponseError = new ResponseError();
     this.ReadAccessResponseError.Parse(s);
     this.ReadAccessResponseEnd = new bit16StreamObjectHeaderEnd();
     this.ReadAccessResponseEnd.Parse(s);
     this.WriteAccessResponseStart = new bit32StreamObjectHeaderStart();
     this.WriteAccessResponseStart.Parse(s);
     this.WriteAccessResponseError = new ResponseError();
     this.WriteAccessResponseError.Parse(s);
     this.WriteAccessResponseEnd = new bit16StreamObjectHeaderEnd();
     this.WriteAccessResponseEnd.Parse(s);
 }
        /// <summary>
        /// Parse the FsshttpbSubResponse structure.
        /// </summary>
        /// <param name="s">An stream containing FsshttpbSubResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.SubResponseStart = new bit32StreamObjectHeaderStart();
            this.SubResponseStart.Parse(s);
            this.RequestID = new CompactUnsigned64bitInteger();
            this.RequestID = RequestID.TryParse(s);
            this.RequestType = new CompactUnsigned64bitInteger();
            this.RequestType = RequestType.TryParse(s);
            byte tempByte = ReadByte();
            this.Status = GetBits(tempByte, 0, 1);
            this.Reserved = GetBits(tempByte, 1, 7);
            if (this.Status == 0x1)
            {
                this.ResponseError = new ResponseError();
                this.ResponseError.Parse(s);
            }
            else
            {
                if (this.RequestType.GetUint(RequestType) == 0x01)
                {
                    this.SubResponseData = new QueryAccessResponse();
                    ((QueryAccessResponse)this.SubResponseData).Parse(s);
                }
                else if (this.RequestType.GetUint(RequestType) == 0x02)
                {
                    this.SubResponseData = new QueryChangesResponse();
                    ((QueryChangesResponse)this.SubResponseData).Parse(s);
                }
                else if (this.RequestType.GetUint(RequestType) == 0x05)
                {
                    this.SubResponseData = new PutChangesResponse();
                    ((PutChangesResponse)this.SubResponseData).Parse(s);
                }
                else if (this.RequestType.GetUint(RequestType) == 0x0B)
                {
                    this.SubResponseData = new AllocateExtendedGUIDRange();
                    ((AllocateExtendedGUIDRange)this.SubResponseData).Parse(s);
                }

            }
            this.SubResponseEnd = new bit16StreamObjectHeaderEnd();
            this.SubResponseEnd.Parse(s);
        }
 /// <summary>
 /// Parse the QueryChangesResponse structure.
 /// </summary>
 /// <param name="s">An stream containing QueryChangesResponse structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.queryChangesResponse = new bit32StreamObjectHeaderStart();
     this.queryChangesResponse.Parse(s);
     this.StorageIndexExtendedGUID = new ExtendedGUID();
     this.StorageIndexExtendedGUID = this.StorageIndexExtendedGUID.TryParse(s);
     byte tempbyte = ReadByte();
     this.P = GetBits(tempbyte, 0, 1);
     this.Reserved = GetBits(tempbyte, 1, 7);
     this.Knowledge = new Knowledge();
     this.Knowledge.Parse(s);
 }
 /// <summary>
 /// Parse the HierarchyFilter structure.
 /// </summary>
 /// <param name="s">An stream containing HierarchyFilter structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.QueryChangesFilterHierarchy = new bit32StreamObjectHeaderStart();
     this.QueryChangesFilterHierarchy.Parse(s);
     this.Depth = (HierarchyFilterDepth)ReadByte();
     this.Count = new CompactUnsigned64bitInteger();
     this.Count = this.Count.TryParse(s);
     this.RootIndexKeyByteArray = ReadBytes((int)this.Count.GetUint(this.Count));
 }
        /// <summary>
        /// Parse the SpecializedKnowledge structure.
        /// </summary>
        /// <param name="s">An stream containing SpecializedKnowledge structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.SpecializedKnowledgeStart = new bit32StreamObjectHeaderStart();
            this.SpecializedKnowledgeStart.Parse(s);
            this.GUID = ReadGuid();

            switch (this.GUID.ToString().ToUpper())
            {
                case "327A35F6-0761-4414-9686-51E900667A4D":
                    this.SpecializedKnowledgeData = new CellKnowLedge();
                    ((CellKnowLedge)this.SpecializedKnowledgeData).Parse(s);
                    break;
                case "3A76E90E-8032-4D0C-B9DD-F3C65029433E":
                    this.SpecializedKnowledgeData = new WaterlineKnowledge();
                    ((WaterlineKnowledge)this.SpecializedKnowledgeData).Parse(s);
                    break;
                case "0ABE4F35-01DF-4134-A24A-7C79F0859844":
                    this.SpecializedKnowledgeData = new FragmentKnowledge();
                    ((FragmentKnowledge)this.SpecializedKnowledgeData).Parse(s);
                    break;
                case "10091F13-C882-40FB-9886-6533F934C21D":
                    this.SpecializedKnowledgeData = new ContentTagKnowledge();
                    ((ContentTagKnowledge)this.SpecializedKnowledgeData).Parse(s);
                    break;
                default:
                    throw new Exception("The GUID is not right.");

            }
            this.SpecializedKnowledgeEnd = new bit16StreamObjectHeaderEnd();
            this.SpecializedKnowledgeEnd.Parse(s);
        }
 /// <summary>
 /// Parse the LockId structure.
 /// </summary>
 /// <param name="s">An stream containing LockId structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.LockIdHeader = new bit32StreamObjectHeaderStart();
     this.LockIdHeader.Parse(s);
     this.LockIdGuid = ReadGuid();
 }
 /// <summary>
 /// Parse the TargetPartitionId structure.
 /// </summary>
 /// <param name="s">An stream containing TargetPartitionId structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.TargetPartitionIdStart = new bit32StreamObjectHeaderStart();
     this.TargetPartitionIdStart.Parse(s);
     this.PartitionIdGUID = ReadGuid();
     this.TargetPartitionIdEnd = new bit16StreamObjectHeaderEnd();
     this.TargetPartitionIdEnd.Parse(s);
 }
 /// <summary>
 /// Parse the ObjectMetadata structure.
 /// </summary>
 /// <param name="s">An stream containing ObjectMetadata structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.ObjectGroupMetadata = new bit32StreamObjectHeaderStart();
     this.ObjectGroupMetadata.Parse(s);
     this.ObjectChangeFrequency = new CompactUnsigned64bitInteger();
     this.ObjectChangeFrequency = this.ObjectChangeFrequency.TryParse(s);
 }
 /// <summary>
 /// Parse the AdditionalFlags structure.
 /// </summary>
 /// <param name="s">An stream containing AdditionalFlags structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.AdditionalFlagsHeader = new bit32StreamObjectHeaderStart();
     this.AdditionalFlagsHeader.Parse(s);
     short tempUshort = ReadINT16();
     this.A = (byte)GetBits(tempUshort, 0, 1);
     this.B = (byte)GetBits(tempUshort, 1, 1);
     this.C = (byte)GetBits(tempUshort, 2, 1);
     this.D = (byte)GetBits(tempUshort, 3, 1);
     this.E = (byte)GetBits(tempUshort, 4, 1);
     this.F = (byte)GetBits(tempUshort, 5, 1);
     this.Reserved = (byte)GetBits(tempUshort, 6, 16);
 }
        /// <summary>
        /// Parse the ObjectMetadataDeclaration structure.
        /// </summary>
        /// <param name="s">An stream containing ObjectMetadataDeclaration structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.ObjectGroupMetadataDeclarations = new bit32StreamObjectHeaderStart();
            this.ObjectGroupMetadataDeclarations.Parse(s);

            List<ObjectMetadata> ObjectMetadataList = new List<ObjectMetadata>();
            while (ContainsStreamObjectHeader(0x78))
            {
                ObjectMetadata tempObjectMetadata = new ObjectMetadata();
                tempObjectMetadata.Parse(s);
                ObjectMetadataList.Add(tempObjectMetadata);
            }
            this.ObjectMetadata = ObjectMetadataList.ToArray();
            this.ObjectGroupMetadataDeclarationsEnd = new bit16StreamObjectHeaderEnd();
            this.ObjectGroupMetadataDeclarationsEnd.Parse(s);
        }
 /// <summary>
 /// Parse the AllocateExtendedGUIDRangeRequest structure.
 /// </summary>
 /// <param name="s">An stream containing AllocateExtendedGUIDRangeRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.allocateExtendedGUIDRangeRequest = new bit32StreamObjectHeaderStart();
     this.allocateExtendedGUIDRangeRequest.Parse(s);
     this.RequestIdCount = new CompactUnsigned64bitInteger();
     this.RequestIdCount = this.RequestIdCount.TryParse(s);
     this.Reserved = ReadByte();
 }
 /// <summary>
 /// Parse the PutChangesRequest structure.
 /// </summary>
 /// <param name="s">An stream containing PutChangesRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.putChangesRequest = new bit32StreamObjectHeaderStart();
     this.putChangesRequest.Parse(s);
     this.StorageIndexExtendedGUID = new ExtendedGUID();
     this.StorageIndexExtendedGUID = this.StorageIndexExtendedGUID.TryParse(s);
     this.ExpectedStorageIndexExtendedGUID = new ExtendedGUID();
     this.ExpectedStorageIndexExtendedGUID = this.ExpectedStorageIndexExtendedGUID.TryParse(s);
     byte tempByte = ReadByte();
     this.A = (byte)GetBits(tempByte, 0, 1);
     this.B = (byte)GetBits(tempByte, 1, 1);
     this.C = (byte)GetBits(tempByte, 2, 1);
     this.D = (byte)GetBits(tempByte, 3, 1);
     this.E = (byte)GetBits(tempByte, 4, 1);
     this.F = (byte)GetBits(tempByte, 5, 1);
     this.G = (byte)GetBits(tempByte, 6, 1);
     this.H = (byte)GetBits(tempByte, 7, 1);
     if (ContainsStreamObjectHeader(0x86))
     {
         this.AdditionalFlags = new AdditionalFlags();
         this.AdditionalFlags.Parse(s);
     }
     if (ContainsStreamObjectHeader(0x85))
     {
         this.LockId = new LockId();
         this.LockId.Parse(s);
     }
     if (ContainsStreamObjectHeader(0x10))
     {
         this.ClientKnowledge = new Knowledge();
         this.ClientKnowledge.Parse(s);
     }
     if (ContainsStreamObjectHeader(0x8A))
     {
         this.DiagnosticRequestOptionInput = new DiagnosticRequestOptionInput();
         this.DiagnosticRequestOptionInput.Parse(s);
     }
 }
 /// <summary>
 /// Parse the CellIDFilter structure.
 /// </summary>
 /// <param name="s">An stream containing CellIDFilter structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.QueryChangesFilterCellID = new bit32StreamObjectHeaderStart();
     this.QueryChangesFilterCellID.Parse(s);
     this.CellID = new CellID();
     this.CellID.Parse(s);
 }
 /// <summary>
 /// Parse the DataElementFragmentDataElement structure.
 /// </summary>
 /// <param name="s">An stream containing DataElementFragmentDataElement structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.DataElementStart = new bit16StreamObjectHeaderStart();
     this.DataElementStart.Parse(s);
     this.DataElementExtendedGUID = new ExtendedGUID();
     this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s);
     this.SerialNumber = new SerialNumber();
     this.SerialNumber = this.SerialNumber.TryParse(s);
     this.DataElementType = new CompactUnsigned64bitInteger();
     this.DataElementType = this.DataElementType.TryParse(s);
     this.DataElementFragment = new bit32StreamObjectHeaderStart();
     this.DataElementFragment.Parse(s);
     this.FragmentExtendedGUID = new ExtendedGUID();
     this.FragmentExtendedGUID = this.FragmentExtendedGUID.TryParse(s);
     this.FragmentDataElementSize = new CompactUnsigned64bitInteger();
     this.FragmentDataElementSize = this.FragmentDataElementSize.TryParse(s);
     this.FragmentFileChunkReference = new FileChunkReference();
     this.FragmentFileChunkReference.Parse(s);
     this.FragmentData = new BinaryItem();
     this.FragmentData.Parse(s);
     this.DataElementEnd = new bit8StreamObjectHeaderEnd();
     this.DataElementEnd.Parse(s);
 }