Example #1
0
        /// <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;
            }
        }