/// <summary> /// Instantiates UdpReceiver with properties for ignoring transmitted udp messages. /// </summary> /// <param name="port">Port to monitor for UDP messages.</param> /// <param name="evtConsumer">Consumer for events raised by Niawa.MsEventController.EventRaiser</param> /// <param name="utilsBus"></param> /// <param name="applicationNameDetailed"></param> /// <param name="parentNodeID"></param> /// <param name="ignoreTransmittedUdpMessages"></param> /// <param name="udpTransmitter"></param> public UdpReceiver(int port , Niawa.MsEventController.EventConsumer evtConsumer , Niawa.Utilities.UtilsServiceBus utilsBus , string applicationNameDetailed , string parentNodeID , bool ignoreTransmittedUdpMessages , UdpTransmitter udpTransmitter) { _ignoreTransmittedUdpMessages = ignoreTransmittedUdpMessages; _udpTransmitter = udpTransmitter; Instantiate(port, evtConsumer, utilsBus, applicationNameDetailed, parentNodeID); }
/// <summary> /// Creates and starts the UDP Receiver, UDP Transmitter, and TCP Session Manager. /// Starts the IPC Command Reader and Thread Health monitor. /// </summary> public void Start() { try { /*create UDP receiver, UDP transmitter, TCP Session Manager*/ logger.Info("[" + _description + "-M] Starting"); if (_started) throw new Exception("[" + _description + "-M] Could not start: NiawaAdHocNetworkAdapter was already started"); /* UDP */ //create UDP _udpTransmitter = new Niawa.NetController.UdpTransmitter(_udpPort, _evtWriter.EvtConsumer, _utilsBus, _applicationName + ".NiawaAdHocNetworkAdapter", _threadStatus.NodeID); _udpReceiver = new Niawa.NetController.UdpReceiver(_udpPort, _evtWriter.EvtConsumer, _utilsBus, _applicationName + ".NiawaAdHocNetworkAdapter", _threadStatus.NodeID, true, _udpTransmitter); //start UDP _udpReceiver.StartListening(_applicationName + ".Start"); _udpTransmitter.StartTransmitting(_applicationName + ".Start"); /* TCP */ //create TcpSessionManager _tcpSessionManager = new TcpSessionManager(_ipAddress, _tcpPortRangeMin, _tcpPortRangeMax, _hostname, _applicationName, _utilsBus, _evtWriter.EvtConsumer, _threadStatus.NodeID); //start TcpSessionManager _tcpSessionManager.Initialize(); _tcpHandshakePort = _tcpSessionManager.HandshakePort; //start thread to watch UDP _threadStatus.IsThreadEnabled = true; t1 = new System.Threading.Thread(UdpReceiverListenerThreadImpl); t1.Start(); //ipc command reader _cmdReader.Start(); //thread health monitor _healthMonitor.Start(); //thread status _threadStatus.Status = Niawa.Threading.ThreadStatus.STATUS_STARTED; //_evtRaiser.RaiseEvent("Status", "Started", string.Empty); _started = true; } catch (Exception ex) { logger.Error("[" + _description + "-M] Error while starting: " + ex.Message, ex); throw ex; } }