Exemple #1
0
        private PublicPortMapping()
        {
            this.hasDriver = (Model.DriverCollection.Instance.FindOne() != null);

            TCMPortMapper.PortMapper.SharedInstance.DidChangeMappingStatus     += new PortMapper.PMDidChangeMappingStatus(PortMappingChanged);
            TCMPortMapper.PortMapper.SharedInstance.ExternalIPAddressDidChange += new PortMapper.PMExternalIPAddressDidChange(ExternalIPChanged);
            TCMPortMapper.PortMapper.SharedInstance.WillStartSearchForRouter   += new PortMapper.PMWillStartSearchForRouter(WillStartSearchForRouter);
            TCMPortMapper.PortMapper.SharedInstance.DidStartWork += new PortMapper.PMDidStartWork(DidStartWork);
            TCMPortMapper.PortMapper.SharedInstance.AllowMultithreadedCallbacks = true;
            TCMPortMapper.PortMapper.SharedInstance.Start();


            this.state = new NoUPnPDeviceFoundState();
            int checkIntervalSec = (int)StationRegistry.GetValue("UPnPCheckInterval", 120);

            this.checkTimer = new Timer(this.CheckState, null, 30 * 1000, checkIntervalSec * 1000);
        }
Exemple #2
0
        private void CheckState(object notUsed)
        {
            lock (lockObj)
            {
                UPnPState newState = this.state.CheckAndTransit();

                while (newState != null && this.state != newState)
                {
                    this.state = newState;
                    newState   = this.state.CheckAndTransit();
                }

                if (newState == null)
                {
                    logger.Debug("UPnP state checker reaches end state.");
                    this.checkTimer.Change(Timeout.Infinite, Timeout.Infinite);
                    return;
                }
                else
                {
                    logger.Debug("Current state is " + newState.ToString() + ". Try again later..");
                }
            }
        }