/// <summary> /// Un-marshal a byte array to PDU struct. /// </summary> /// <param name="binaryReader">BinaryReader</param> internal override void FromBytes(BinaryReader binaryReader) { base.FromBytes(binaryReader); auth_verifier = RpceUtility.AuthVerifierFromBytes( binaryReader, auth_length); max_xmit_frag = binaryReader.ReadUInt16(); max_recv_frag = binaryReader.ReadUInt16(); assoc_group_id = binaryReader.ReadUInt32(); p_context_elem = new p_cont_list_t(); p_context_elem.n_context_elem = binaryReader.ReadByte(); p_context_elem.reserved = binaryReader.ReadByte(); p_context_elem.reserved2 = binaryReader.ReadUInt16(); p_context_elem.p_cont_elem = new p_cont_elem_t[p_context_elem.n_context_elem]; for (int i = 0; i < p_context_elem.n_context_elem; i++) { p_context_elem.p_cont_elem[i].p_cont_id = binaryReader.ReadUInt16(); p_context_elem.p_cont_elem[i].n_transfer_syn = binaryReader.ReadByte(); p_context_elem.p_cont_elem[i].reserved = binaryReader.ReadByte(); p_context_elem.p_cont_elem[i].abstract_syntax = new p_syntax_id_t(); p_context_elem.p_cont_elem[i].abstract_syntax.if_uuid = new Guid(binaryReader.ReadBytes(RpceUtility.GUID_SIZE)); p_context_elem.p_cont_elem[i].abstract_syntax.if_vers_major = binaryReader.ReadUInt16(); p_context_elem.p_cont_elem[i].abstract_syntax.if_vers_minor = binaryReader.ReadUInt16(); p_context_elem.p_cont_elem[i].transfer_syntaxes = new p_syntax_id_t[p_context_elem.p_cont_elem[i].n_transfer_syn]; for (int j = 0; j < p_context_elem.p_cont_elem[i].transfer_syntaxes.Length; j++) { p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_uuid = new Guid(binaryReader.ReadBytes(RpceUtility.GUID_SIZE)); p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_vers_major = binaryReader.ReadUInt16(); p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_vers_minor = binaryReader.ReadUInt16(); } } }
/// <summary> /// Un-marshal a byte array to PDU struct. /// </summary> /// <param name="binaryReader">BinaryReader</param> internal override void FromBytes(BinaryReader binaryReader) { base.FromBytes(binaryReader); auth_verifier = RpceUtility.AuthVerifierFromBytes( binaryReader, auth_length); max_xmit_frag = binaryReader.ReadUInt16(); max_recv_frag = binaryReader.ReadUInt16(); assoc_group_id = binaryReader.ReadUInt32(); if (packed_drep.dataRepFormat != RpceDataRepresentationFormat.IEEE_LittleEndian_ASCII) { max_xmit_frag = EndianUtility.ReverseByteOrder(max_xmit_frag); max_recv_frag = EndianUtility.ReverseByteOrder(max_recv_frag); assoc_group_id = EndianUtility.ReverseByteOrder(assoc_group_id); } p_context_elem = new p_cont_list_t(); p_context_elem.n_context_elem = binaryReader.ReadByte(); p_context_elem.reserved = binaryReader.ReadByte(); p_context_elem.reserved2 = binaryReader.ReadUInt16(); p_context_elem.p_cont_elem = new p_cont_elem_t[p_context_elem.n_context_elem]; for (int i = 0; i < p_context_elem.n_context_elem; i++) { p_context_elem.p_cont_elem[i].p_cont_id = binaryReader.ReadUInt16(); p_context_elem.p_cont_elem[i].n_transfer_syn = binaryReader.ReadByte(); p_context_elem.p_cont_elem[i].reserved = binaryReader.ReadByte(); p_context_elem.p_cont_elem[i].abstract_syntax = new p_syntax_id_t(); p_context_elem.p_cont_elem[i].abstract_syntax.if_uuid = new Guid(binaryReader.ReadBytes(RpceUtility.GUID_SIZE)); p_context_elem.p_cont_elem[i].abstract_syntax.if_version = binaryReader.ReadUInt32(); if (packed_drep.dataRepFormat != RpceDataRepresentationFormat.IEEE_LittleEndian_ASCII) { p_context_elem.p_cont_elem[i].p_cont_id = EndianUtility.ReverseByteOrder(p_context_elem.p_cont_elem[i].p_cont_id); p_context_elem.p_cont_elem[i].abstract_syntax.if_uuid = EndianUtility.ReverseByteOrder(p_context_elem.p_cont_elem[i].abstract_syntax.if_uuid); p_context_elem.p_cont_elem[i].abstract_syntax.if_version = EndianUtility.ReverseByteOrder(p_context_elem.p_cont_elem[i].abstract_syntax.if_version); } p_context_elem.p_cont_elem[i].transfer_syntaxes = new p_syntax_id_t[p_context_elem.p_cont_elem[i].n_transfer_syn]; for (int j = 0; j < p_context_elem.p_cont_elem[i].transfer_syntaxes.Length; j++) { p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_uuid = new Guid(binaryReader.ReadBytes(RpceUtility.GUID_SIZE)); p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_version = binaryReader.ReadUInt32(); if (packed_drep.dataRepFormat != RpceDataRepresentationFormat.IEEE_LittleEndian_ASCII) { p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_uuid = EndianUtility.ReverseByteOrder(p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_uuid); p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_version = EndianUtility.ReverseByteOrder(p_context_elem.p_cont_elem[i].transfer_syntaxes[j].if_version); } } } }