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(); } }); } }
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(); }
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(); }
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(); }
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); } ); }