/// <summary> /// Notifies subscribed IP data receive listeners that a new XBee IP packet has been received /// in form of an <see cref="IPMessage"/>. /// </summary> /// <param name="ipMessage">The message to be sent to subscribed data listeners.</param> /// <seealso cref="IPMessage"/> private void NotifyIPDataReceived(IPMessage ipMessage) { logger.InfoFormat(connectionInterface.ToString() + " IP message received from {0} >> {1}.", ipMessage.IPAddress, ipMessage.DataString); try { lock (IPDataReceived) { var handler = IPDataReceived; if (handler != null) { var args = new IPDataReceivedEventArgs(ipMessage); handler.GetInvocationList().AsParallel().ForAll((action) => { action.DynamicInvoke(this, args); }); } } } catch (Exception e) { logger.Error(e.Message, e); } }
/// <summary> /// Programmatic trigger for IPDataReceived event /// </summary> /// <param name="message">Message containing the IP address the message belongs to, source and dest ports, IP protocol, and the content of the message</param> protected virtual void OnIPDataReceived(IPMessage message) { IPDataReceived?.Invoke(this, message); }
/// <summary> /// Instantiates a <see cref="IPDataReceivedEventArgs"/> object with the provided parameters. /// </summary> /// <param name="ipMessage">The received IP Data message.</param> public IPDataReceivedEventArgs(IPMessage ipMessage) { IPDataReceived = ipMessage; }