Example #1
0
        internal void Start(int portNumber)
        {
            Port = portNumber;
            if (_listeningThread != null && _listeningThread.ThreadState == ThreadState.Running)
            {
                throw new Exception("Logger already running");
            }

            try
            {
                if (InitialParametersClass.NumberOfExternalEthernetInterfaces > 0)
                {
                    Logger.Log("Control system has external ethernet interfaces, will attempt to map port to internal IP");
                    var id = CrestronEthernetHelper.GetAdapterdIdForSpecifiedAdapterType(EthernetAdapterType.EthernetCSAdapter);
                    var controlSubnetIp = CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, id);
                    Logger.Log($"CS IP Address is: {controlSubnetIp}");
                    var result = CrestronEthernetHelper.AddPortForwarding((ushort)portNumber, (ushort)portNumber,
                                                                          controlSubnetIp, CrestronEthernetHelper.ePortMapTransport.TCP);
                    if (result == CrestronEthernetHelper.PortForwardingUserPatRetCodes.NoErr)
                    {
                        _csPortForwardIp = controlSubnetIp;
                        Logger.Log(
                            $"Port Fowarding result = {result}, forwarded TCP port {portNumber} to internal IP: {controlSubnetIp}");
                    }
                    else
                    {
                        Logger.Warn($"Could not create port forwarding for Logger, result = {result}");
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }

            _listeningThread = new Thread(ListenProcess)
            {
                Name = "LoggerRx" + InitialParametersClass.ApplicationNumber
            };
            _listeningThread.Start();
            Logger.Highlight($"Logger started console on port {portNumber}");
        }