/// <summary>
        /// Validates ProbeMatches messages
        /// </summary>
        /// <param name="message">Message to be validated</param>
        /// <param name="reason">Reason why message is invalid</param>
        /// <returns>true, if message is valid</returns>
        protected bool ValidateProbeMatchMessage(SoapMessage <WSD.ProbeMatchesType> message, out string reason)
        {
            bool mode1 = Features.Contains(Feature.DiscoveryTypesDnNetworkVideoTransmitter);
            bool mode2 = Features.Contains(Feature.DiscoveryTypesTdsDevice);
            bool res   = true;

            reason = null;
            try
            {
                //check Types namespace
                if (message.Object.ProbeMatch == null)
                {
                    reason = Resources.ErrorNoProbeMatch_Text;
                    return(false);
                }
                bool found = false;
                for (int i = 0; i < message.Object.ProbeMatch.Length; i++)
                {
                    WSD.ProbeMatchType match = message.Object.ProbeMatch[i];
                    if (DiscoveryUtils.CheckDeviceMatchType(message, i, out reason, mode1, mode2))
                    {
                        if (!ValidateProbeMatch(match, out reason))
                        {
                            return(false);
                        }
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                reason = e.Message;
                res    = false;
            }
            return(res);
        }
Exemple #2
0
        /// <summary>
        /// Validates ProbeMatches messages
        /// </summary>
        /// <param name="message">Message to be validated</param>
        /// <param name="reason">Reason why message is invalid</param>
        /// <returns>true, if message is valid</returns>
        protected bool ValidateProbeMatchMessage(SoapMessage <WSD.ProbeMatchesType> message, out string reason)
        {
            bool res = true;

            reason = null;
            try
            {
                //check Types namespace
                if (message.Object.ProbeMatch == null)
                {
                    reason = Resources.ErrorNoProbeMatch_Text;
                    return(false);
                }
                bool found = false;
                for (int i = 0; i < message.Object.ProbeMatch.Length; i++)
                {
                    WSD.ProbeMatchType match = message.Object.ProbeMatch[i];
                    if (DiscoveryUtils.CheckDeviceMatchType(message, i))
                    {
                        if (!ValidateProbeMatch(match, out reason))
                        {
                            return(false);
                        }
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    reason = string.Format(Resources.ErrorIncorrectTypes_Format, DiscoveryUtils.ONVIF_DISCOVER_TYPES, DiscoveryUtils.ONVIF_NETWORK_WSDL_URL);
                    return(false);
                }
            }
            catch (Exception e)
            {
                reason = e.Message;
                res    = false;
            }
            return(res);
        }