Example #1
0
        /// <summary>
        /// Starts the adapter.
        /// This method returns immediately leaving to a background worker
        /// the task of getting the data and process it.
        ///
        /// Throws an exception if it can't initialise itself.
        /// </summary>
        public void Start()
        {
            try
            {
                LogVersions();

                _logger.Info("Adapter is connecting to the UDAPI service...");

                _udapiServiceFacade.Connect();
                if (!_udapiServiceFacade.IsConnected)
                {
                    return;
                }

                _logger.Debug("Adapter connected to the UDAPI - initialising...");

                AdapterActorSystem.Init(
                    _settings,
                    _udapiServiceFacade,
                    _platformConnector,
                    _stateManager,
                    _suspensionManager,
                    _streamHealthCheckValidation,
                    _fixtureValidation);

                _logger.InfoFormat("Adapter started");
                _stats.SetValue(AdapterCoreKeys.ADAPTER_STARTED, "1");
            }
            catch (Exception ex)
            {
                _logger.Fatal("A fatal error has occurred and the Adapater cannot start. You can try a manual restart", ex);
                throw;
            }
        }
Example #2
0
        /// <summary>
        /// Allows to stop the adapter.
        ///
        /// Before returning, and if it is so configured,
        /// the adapter sends a "suspend" request to
        /// all the currently registred fixtures.
        /// </summary>
        public void Stop()
        {
            _logger.InfoFormat("Adapter is stopping");

            try
            {
                _platformConnector?.Dispose();
                _udapiServiceFacade?.Disconnect();
                AdapterActorSystem.Dispose();
            }
            catch (Exception e)
            {
                _logger.Error("An error occured while disposing the adapter", e);
            }

            _stats.SetValue(AdapterCoreKeys.ADAPTER_STARTED, "0");
            _logger.InfoFormat("Adapter stopped");
        }
        public void SafeDisposeSupervisorIfEnabled()
        {
            //
            //Arrange
            //
            var objectProviderMock              = new Mock <IObjectProvider <Dictionary <string, FixtureOverview> > >();
            var settingsMock                    = new Mock <ISettings>();
            var udapiServiceFacadeMock          = new Mock <IServiceFacade>();
            var platformConnectorMock           = new Mock <IAdapterPlugin>();
            var stateManagerMock                = new Mock <IStateManager>();
            var suspensionManagerMock           = new Mock <ISuspensionManager>();
            var streamHealthCheckValidationMock = new Mock <IStreamHealthCheckValidation>();
            var fixtureValidationMock           = new Mock <IFixtureValidation>();

            settingsMock.SetupGet(s => s.StateProviderPath).Returns(@"C:\Fake_Path");
            settingsMock.SetupGet(s => s.FixturesStateFilePath).Returns(@"Fake_Path_Rel");
            settingsMock.SetupGet(s => s.FixtureCheckerFrequency).Returns(60000);

            //
            //Act
            //
            AdapterActorSystem.Init(
                settingsMock.Object,
                udapiServiceFacadeMock.Object,
                platformConnectorMock.Object,
                stateManagerMock.Object,
                suspensionManagerMock.Object,
                streamHealthCheckValidationMock.Object,
                fixtureValidationMock.Object);
            SupervisorStartUp.Initialize(objectProviderMock.Object);

            //
            //Assert
            //
            Assert.DoesNotThrow(SupervisorStartUp.Dispose);
        }