/// <summary>
 /// Create a probe message
 /// </summary>
 /// <param name="types">Probe type</param>
 /// <param name="scopes">The scopes value</param>
 /// <param name="matchBy">Match by</param>
 /// <returns>The probe message</returns>
 public SoapEnvelope CreateProbeMessage(string types, string[] scopes, string matchBy)
 {
     ProbeType probe = new ProbeType(types, scopes, matchBy);
     return new SoapEnvelope(new ProbeOp(probe));
 }
        /// <summary>
        /// Capture requirements related to Probe structure
        /// </summary>
        /// <param name="probe">Probe structure</param>
        private void CaptureProbeRequirements(ProbeType probe)
        {
            // Since the message parsed by stack layer properly, capture the requirement directly.
            Site.CaptureRequirement(
                24,
                "[In Probe] The Discovery Protocol uses a WSD Probe with the <Types> and <Scopes> elements in the WSD message.");

            // Since the message parsed by stack layer properly, capture the requirement directly.
            Site.CaptureRequirement(
                25,
                @"[The schema definition of Probe is:] <wsd:Probe>
                  <wsd:Types>
                    PeerDist:PeerDistData
                  </wsd:Types>
                  <wsd:Scopes MatchBy=""http://schemas.xmlsoap.org/ws/2005/04/discovery/strcmp0"">
                0200000000000000000000000000000000000000000000000000000000000000000
                0000000000000000000000000000000000000000000000000000000000000
                  </wsd:Scopes>
                </wsd:Probe>");

            // Since the probe message is received succesfully, the reuqirement can be captured directly
            Site.CaptureRequirement(
                175,
                @"Probe message MUST be sent using the following assignments:
                • DISCOVERY_PORT: port 3702 [IANA]
                • IPv4 multicast address: 239.255.255.250
                • IPv6 multicast address: FF02::C (link-local scope)");

            this.CaptureClientRoleScopesElementRequirements(probe.Scopes);
        }
        /// <summary>
        /// Create a probe message
        /// </summary>
        /// <param name="types">Probe type</param>
        /// <param name="scopes">The scopes value</param>
        /// <param name="matchBy">Match by</param>
        /// <returns>The probe message</returns>
        public SoapEnvelope CreateProbeMessage(string types, string[] scopes, string matchBy)
        {
            ProbeType probe = new ProbeType(types, scopes, matchBy);

            return(new SoapEnvelope(new ProbeOp(probe)));
        }