public void SendMessageOrStartApplication_AllCallsFails_RetriesFiveTimes() { var expectedMessage = "TestMessage"; _pipeServerManager.IsServerRunning().Returns(true); var starter = BuildMaybePipedApplicationStarter(5); starter.SendMessageOrStartApplication(() => expectedMessage, () => false, false); _pipeServerManager.Received(starter.Retries).TrySendPipeMessage(expectedMessage); }
public async Task <bool> SendMessageOrStartApplication(Func <string> composePipeMessage, Func <bool> startApplication, bool startManagePrintJobs) { _settingsManager.LoadAllSettings(); var loadHistoryTask = Task.Run(() => _jobHistoryActiveRecord.Load()); var pipeMessage = composePipeMessage(); var retry = 0; var success = false; // Make n Attempts: Look if a pipe server exists, if so, send a message. If that fails, retry (and maybe do the job yourself) while (!success && (retry++ < Retries)) { _logger.Debug("Starting attempt {0}: ", retry); if (_pipeServerManager.IsServerRunning()) { success = TrySendPipeMessage(pipeMessage); _logger.Debug("TrySendPipeMessage: " + success); } else { success = TryStartApplication(startApplication, startManagePrintJobs); _logger.Debug("TryStartApplication: " + success); } } if (success) { _logger.Debug("Starting update check thread"); StartUpdateCheck(); _logger.Debug("Starting Cleanup thread"); StartCleanUpThread(); } await Shutdown(); await loadHistoryTask; return(success); }