示例#1
0
        public MainViewmodel()
        {
            ConfigError = Config.Instance.Error;

            ReloadCommand     = new RelayCommand(Reload);
            EscapeCommand     = new RelayCommand(EscapePressed);
            ResetPingsCommand = new RelayCommand(ResetPings);
            Devices           = new BindingList <DeviceModel>();
            GraphItems        = new BindingList <GraphItem>();
            BindingOperations.EnableCollectionSynchronization(Devices, _syncLock);
            BindingOperations.EnableCollectionSynchronization(GraphItems, _syncLock);

            StartWithWindows = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true).GetValue("MillenniumTools") != null;

            _workers = new List <WorkerModel>();
            var router      = new Router(Config.Instance.RouterIP);
            var routerModel = getDevice(Config.Instance.RouterIP);

            RestartRouterCommand = new RelayCommand(() => router.RestartModem(), () => routerModel.IsAuthenticated == true);
            _workers.Add(new WorkerModel
            {
                Worker = getRouterWorker(router, Config.Instance.RouterUsername, Config.Instance.RouterPassword),
                Device = router
            });
            foreach (var ip in Config.Instance.ExtenderIPs)
            {
                var extender = new Extender(ip);
                _workers.Add(new WorkerModel
                {
                    Worker = getExtenderWorker(extender, Config.Instance.ExtenderUsername, Config.Instance.ExtenderPassword),
                    Device = extender
                });
            }
            foreach (var ip in Config.Instance.ReferenceIPs)
            {
                var reference = new ReferenceDevice(ip);
                _workers.Add(new WorkerModel
                {
                    Worker = getReferenceWorker(reference),
                    Device = reference
                });
            }
            _reloadTimer = new Timer
            {
                AutoReset = true,
                Enabled   = false,
                Interval  = Config.Instance.ReloadInterval.TotalMilliseconds
            };
            _reloadTimer.Elapsed += (s, e) => Reload();
            Reload();
            _reloadTimer.Start();
            _pingTimer = new Timer
            {
                AutoReset = true,
                Enabled   = false,
                Interval  = Config.Instance.PingInterval.TotalMilliseconds
            };
            _pingTimer.Elapsed += (s, e) => DoPing();
            _pingTimer.Start();
        }
示例#2
0
        private BackgroundWorker getReferenceWorker(ReferenceDevice referenceDevice)
        {
            var bw = new BackgroundWorker();

            bw.DoWork += (s, e) =>
            {
                var device = getDevice(referenceDevice.IP);
                device.RebootCommand       = null;
                device.DoReboot            = null;
                device.IsLoading           = true;
                device.IsNetworkAccessible = referenceDevice.IsNetworkAccessible();
                var state = referenceDevice.GetState();
                device.IsHttpAccessible    = state.Accessible;
                device.IsAuthenticated     = null;
                device.IsActive            = null;
                device.IsLoading           = false;
                device.CouldNotDetermineIp = referenceDevice.CouldNotDetermineIp;
            };
            bw.RunWorkerCompleted += (s, e) =>
            {
                OnPropertyChanged("Devices");
            };
            return(bw);
        }