/// <summary>
        /// Convert the responsemessage struct defined in adapter to stack
        /// </summary>
        /// <param name="responseMessage">The response message of send initialInfoMeaage or segmentInfoMessage</param>
        /// <returns>Return the ResponseMessage type defined in stack</returns>
        public static RESPONSE_MESSAGE ConvertToStackForResponseMsg(ResponseMessage responseMessage)
        {
            RESPONSE_MESSAGE responseMessageStack;
            responseMessageStack.ResponseCode = ConvertToStackForResponseCode(responseMessage.ResponseCode);
            responseMessageStack.TransportHeader = ConvertToStackForTransHeader(responseMessage.TransportHeader);

            return responseMessageStack;
        }
        /// <summary>
        /// Capture the ResponseMessage RS.
        /// </summary>
        /// <param name="responseMsg">A ResponseMessage message of an INITIAL_OFFER_MESSAGE.</param>
        private void ValidateInitialOfferMessageResponse(ResponseMessage responseMsg)
        {
            // Capture MS-PCHC R55
            uint expect = sizeof(ResponseCode);
            uint actual = responseMsg.TransportHeader.Size;
            Site.CaptureRequirementIfAreEqual<uint>(
                expect,
                actual,
                55,
                @"[In Transport Header] The transport adds the following header[Size (4 bytes):  Total message size
                in bytes, excluding this field] in front of any response protocol message.");

            // Capture MS-PCHC R56
            Site.Log.Add(
               LogEntryKind.Debug,
               "Verify MS-PCHC_R56, Record responseMsg.ResponseCode Type:{0}",
               responseMsg.ResponseCode.ToString());

            // The received message is the same type as ResponseMessage, so this can be directly validated
            Site.CaptureRequirement(
                56,
                @"[In Response Code] Each response message contains a response code, as specified below
                [Transportheader (4 bytes), ResponseCode (1 byte)].");

            // Capture MS-PCHC R58
            Site.CaptureRequirementIfAreEqual<uint>(
                1,
                sizeof(ResponseCode),
                58,
                @"[In Response Code] ResponseCode (1 byte):  A code that indicates the server
                response to the client request message.");

            // Capture MS-PCHC R61
            Site.CaptureRequirementIfIsTrue(
                responseMsg.ResponseCode == ResponseCode.INTERESTED
                || responseMsg.ResponseCode == ResponseCode.OK,
                61,
                @"[In Response Code] In an INITIAL_OFFER_MESSAGE (section 2.2.1.3),
                the response code MUST be either OK or INTERESTED.");

            // Capture MS-PCHC R131
            Site.CaptureRequirementIfIsTrue(
                responseMsg.ResponseCode == ResponseCode.INTERESTED
                || responseMsg.ResponseCode == ResponseCode.OK,
                131,
                @"[In Response Message] Response messages are sent in response to the following request messages:
                INITIAL_OFFER_MESSAGE, section 2.2.1.3, SEGMENT_INFO_MESSAGE, section 2.2.1.4.");
        }
        /// <summary>
        /// Capture the ResponseMessage RS.
        /// </summary>
        /// <param name="responseMsg">A ResponseMessage message of an INITIAL_OFFER_MESSAGE.</param>
        private void ValidateSegmentInfoResponse(ResponseMessage responseMsg)
        {
            // Capture MS-PCHC R55
            uint expect = sizeof(ResponseCode);
            uint actual = responseMsg.TransportHeader.Size;
            Site.CaptureRequirementIfAreEqual<uint>(
                expect,
                actual,
                55,
                @"[In Transport Header] The transport adds the following header[Size (4 bytes):  Total message size
                in bytes, excluding this field] in front of any response protocol message.");

            // Capture MS-PCHC R56
            Site.Log.Add(
                LogEntryKind.Debug,
                "Verify MS-PCHC_R56, Record responseMsg.ResponseCode Type:{0}",
                responseMsg.ResponseCode.ToString());

            // The received message is the same type as ResponseMessage, so this can be directly validated
            Site.CaptureRequirement(
                56,
               @"[In Response Code] Each response message contains a response code, as specified below
                [Transportheader (4 bytes), ResponseCode (1 byte)].");

            // Capture MS-PCHC R58
            Site.CaptureRequirementIfAreEqual<uint>(
                1,
                sizeof(ResponseCode),
                58,
                @"[In Response Code] ResponseCode (1 byte):  A code that indicates the server
                response to the client request message.");

            // Capture MS-PCHC R62
            Site.CaptureRequirementIfAreEqual<ResponseCode>(
                ResponseCode.OK,
                responseMsg.ResponseCode,
                62,
                @"[In Response Code] In a SEGMENT_INFO_MESSAGE (section 2.2.1.4), the response code MUST be OK.");

            Site.Log.Add(
                LogEntryKind.Debug,
                "Verify MS-PCHC_R72, Record responseMsg Type:{0}",
                responseMsg.ToString());

            // Capture MS-PCHC R72
            // The received message is the same type as ResponseMessage, so this can be directly validated
            Site.CaptureRequirement(
                72,
                @"[In INITIAL_OFFER_MESSAGE Request Received] The hosted cache MUST respond with a
                correctly formatted response message, as specified in section 2.2.2.");
        }