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);
        }
Ejemplo n.º 2
0
        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);
        }