public static bool CheckDeviceHelloType(SoapMessage <WSD.HelloType> message)
 {
     return(CheckDeviceType(message.Raw, "/s:Envelope/s:Body/wsd:Hello/wsd:Types"));
 }
Exemple #2
0
 /// <summary>
 /// Parse UDP packet
 /// </summary>
 /// <typeparam name="T">Type of expected object</typeparam>
 /// <param name="e">Event arguments, containing endpoint address and incoming bytes</param>
 /// <param name="action">Post-processing action</param>
 protected void ProcessIncomingPacket <T>(DiscoverySocketEventArgs e, Action action)
     where T : class
 {
     if ((_listenAddress == null) || DiscoveryUtils.CompareAddresses(e.Source.Address, _listenAddress))
     {
         try
         {
             //try to parse message according to expected type
             SoapMessage <T> message = DiscoverySoapBuilder.ParseMessage <T>(e.Message, _discoverySchemas);
             if (IsExpectedMessage <T>(message))
             {
                 EventHandler <DiscoveryMessageEventArgs> handler = GetHandler(message.Object.GetType());
                 DiscoveryMessageEventArgs args = new DiscoveryMessageEventArgs(
                     message.ToSoapMessage <object>(),
                     e.Source.Address);
                 if (handler != null)
                 {
                     handler(this, args);
                 }
                 action();
             }
         }
         catch (SoapFaultException ex)
         {
             if (ex.Message != null)
             {
                 if (IsExpectedMessage <Fault>(ex.FaultMessage))
                 {
                     if (SoapFaultReceived != null)
                     {
                         SoapFaultReceived(this, new DiscoveryErrorEventArgs(ex, ex.Fault));
                     }
                     action();
                 }
             }
         }
         catch (UnxpectedElementException ex)
         {
             if ((_listenMessages.Count() > 0) && IsExpectedMessageHeader(ex.Headers))
             {
                 //throw this  exception only is message contains proper RelatedTo, otherwise just ignore message
                 if (ReceiveError != null)
                 {
                     ReceiveError(this, new DiscoveryErrorEventArgs(ex, null));
                 }
                 action();
                 throw;
             }
         }
         catch (Exception ex)
         {
             if (ReceiveError != null)
             {
                 ReceiveError(this, new DiscoveryErrorEventArgs(ex, null));
             }
             System.Diagnostics.Trace.WriteLine(string.Format("Discovery::OnMessageReceived error [{0}]",
                                                              ex.Message));
             System.Diagnostics.Trace.Flush();
         }
     }
 }
 public static bool CheckDeviceMatchType(SoapMessage <WSD.ProbeMatchesType> message, int matchNumber)
 {
     return(CheckDeviceType(message.Raw, string.Format("/s:Envelope/s:Body/wsd:ProbeMatches/wsd:ProbeMatch/wsd:Types[{0}]", matchNumber + 1)));
 }
 public DiscoveryMessageEventArgs(SoapMessage <object> message, IPAddress sender)
 {
     Message = message;
     Sender  = sender;
 }
 public static bool CheckDeviceHelloType(SoapMessage <WSD.HelloType> message, out string reason, bool mode1, bool mode2)
 {
     return(CheckDeviceType(message.Raw, "/s:Envelope/s:Body/wsd:Hello/wsd:Types",
                            message.Object.Scopes, out reason, mode1, mode2));
 }
        public static bool CheckDeviceMatchType(SoapMessage <WSD.ProbeMatchesType> message, int matchNumber, bool mode1, bool mode2)
        {
            string reason;

            return(CheckDeviceMatchType(message, matchNumber, out reason, mode1, mode2));
        }
 public static bool CheckDeviceMatchType(SoapMessage <WSD.ProbeMatchesType> message, int matchNumber, out string reason, bool mode1, bool mode2)
 {
     return(CheckDeviceType(message.Raw,
                            string.Format("/s:Envelope/s:Body/wsd:ProbeMatches/wsd:ProbeMatch/wsd:Types[{0}]", matchNumber + 1),
                            message.Object.ProbeMatch[matchNumber].Scopes, out reason, mode1, mode2));
 }
Exemple #8
0
 public SoapFaultException(SoapMessage <Fault> message)
 {
     Fault        = message.Object;
     FaultMessage = message;
 }