コード例 #1
0
        private void Bootstrap(CommandLineArguments commandLineArguments)
        {
            var server = BootstrapServer(commandLineArguments.BaseUrl);
            var authenticationService = new AuthenticationService(server);

            statusPublisher = new StatusPublisher(server, authenticationService);

            var standUpModel = new StandUpModel(new DispatcherTimerWrapper(), commandLineArguments.DeskStateTimes.SittingTime, commandLineArguments.DeskStateTimes.StandingTime);

            standUpModel.DeskStateChanged += async(s, f) => await statusPublisher.PublishChangedDeskState(f.NewDeskState);

            var standUpViewModel = new StandUpViewModel(standUpModel, authenticationService, this);

            standUpViewModel.PropertyChanged += (sender, eventArgs) =>
            {
                if (eventArgs.PropertyName.Equals("AuthenticationStatus"))
                {
                    Task.Run(async() => await statusPublisher.PublishChangedDeskState(standUpModel.DeskState));
                }
            };

            MainWindow = new MainWindow(standUpViewModel);
            MainWindow.Show();

            if (commandLineArguments.Update)
            {
                updateTask = Task.Run(async() =>
                {
                    using (var mgr = new UpdateManager(Settings.Default.UpdateUrl, "StandUpTimer"))
                    {
                        await mgr.UpdateApp();
                    }
                });
            }
        }
コード例 #2
0
        public async Task You_can_publish_the_end_of_a_session()
        {
            var server = A.Fake <IServer>();
            var authenticationStatus = A.Fake <IAuthenticationStatus>();

            A.CallTo(() => authenticationStatus.IsLoggedIn).Returns(true);

            var target = new StatusPublisher(server, authenticationStatus);

            await target.PublishEndOfSession();

            A.CallTo(() => server.SendDeskState(A <Status> .That.Matches(x => x.DeskState == DeskState.Inactive)))
            .MustHaveHappened();
        }
コード例 #3
0
        public async Task You_can_publish_a_new_state()
        {
            var server = A.Fake <IServer>();
            var authenticationStatus = A.Fake <IAuthenticationStatus>();

            A.CallTo(() => authenticationStatus.IsLoggedIn).Returns(true);

            var target = new StatusPublisher(server, authenticationStatus);

            await target.PublishChangedDeskState(StandUpTimer.Models.DeskState.Standing);

            A.CallTo(() => server.SendDeskState(A <Status> .That.Matches(x => x.DeskState == DeskState.Standing)))
            .MustHaveHappened();
        }
コード例 #4
0
        public async Task When_publishing_use_the_current_time()
        {
            TestableDateTime.DateTime = A.Fake <IDateTime>();
            A.CallTo(() => TestableDateTime.DateTime.Now).Returns(new DateTime(2015, 4, 21, 12, 19, 0));

            var server = A.Fake <IServer>();
            var authenticationStatus = A.Fake <IAuthenticationStatus>();

            A.CallTo(() => authenticationStatus.IsLoggedIn).Returns(true);

            var target = new StatusPublisher(server, authenticationStatus);

            await target.PublishChangedDeskState(StandUpTimer.Models.DeskState.Standing);

            A.CallTo(() => server.SendDeskState(A <Status> .That.Matches(x => x.DateTime.Equals("2015, 4, 21, 12, 19, 0, 0"))))
            .MustHaveHappened();
        }
コード例 #5
0
        private static void Main(string[] args)
        {
            var logPath = ConfigurationManager.AppSettings["logPath"];

            if (string.IsNullOrWhiteSpace(logPath))
            {
                logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log.txt");
            }

            var sourcesPath = ConfigurationManager.AppSettings["sourcesPath"];

            IEnumerable <Paths> paths = null;

            if (File.Exists(sourcesPath))
            {
                try
                {
                    paths = JsonConvert.DeserializeObject <List <Paths> >(File.ReadAllText(sourcesPath));
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Exception has occured!");
                    Debug.WriteLine(ex.Message);
                    return;
                }
            }

            if (paths == null)
            {
                return;
            }

            var fileManagers = paths.Where(o => !IsUnc(o.InputPath)).Select(o => new FileManager(
                                                                                o.InputPath,
                                                                                o.TempPath,
                                                                                o.CorruptedPath
                                                                                ));

            var fileTarget = new FileTarget {
                Name     = "Default",
                FileName = logPath,
                Layout   = "${date} ${message} ${onexception:inner=${exception:format=toString}}"
            };

            var logConfig = new LoggingConfiguration();

            logConfig.AddTarget(fileTarget);
            logConfig.AddRuleForAllLevels(fileTarget);

            var logFactory = new LogFactory(logConfig);

            var documentPublisher = new DocumentPublisher();
            var statusPublisher   = new StatusPublisher();
            var documentManager   = new DocumentManager();
            var barcodeManager    = new BarcodeManager();
            var settingsListener  = new SettingsListener();

            HostFactory.Run(
                conf =>
            {
                conf.StartAutomaticallyDelayed();
                conf.SetServiceName("StreamingScannerService");
                conf.SetDisplayName("Streaming Scanner Service");
                conf.RunAsLocalSystem();
                conf.EnableServiceRecovery(recovery =>
                {
                    recovery
                    .RestartService(1)
                    .RestartService(3)
                    .RestartService(5)
                    .SetResetPeriod(1);
                });

                conf.Service <Classes.ScannerManager>(callback =>
                {
                    callback.ConstructUsing(() => new Classes.ScannerManager(
                                                fileManagers,
                                                documentManager,
                                                barcodeManager,
                                                documentPublisher,
                                                statusPublisher,
                                                settingsListener));
                    callback.WhenStarted(service => service.Start());
                    callback.WhenStopped(service => service.Stop());
                }).UseNLog(logFactory);
            }
                );
        }