/// <summary> /// /// </summary> /// <param name="settings"></param> /// <param name="udApiService"></param> /// <param name="adapterPlugin"></param> /// <param name="stateManager"></param> /// <param name="suspensionManager"></param> /// <param name="streamHealthCheckValidation"></param> /// <param name="fixtureValidation"></param> public static void Init( ISettings settings, IServiceFacade udApiService, IAdapterPlugin adapterPlugin, IStateManager stateManager, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { _actorSystem = ActorSystem.Create("AdapterSystem"); var fileStoreProvider = new FileStoreProvider(settings.StateProviderPath); CreateFixtureStateActor(settings, fileStoreProvider); CreateStreamListenerManagerActor(settings, adapterPlugin, stateManager, suspensionManager, streamHealthCheckValidation, fixtureValidation); CreateSportProcessorRouterActor(settings, udApiService); CreateSportsProcessorActor(settings, udApiService); // Setup an actor that will handle deadletter type messages var deadletterWatchMonitorProps = Props.Create(() => new AdapterDeadletterMonitorActor()); var deadletterWatchActorRef = _actorSystem.ActorOf(deadletterWatchMonitorProps, "AdapterDeadletterMonitorActor"); // subscribe to the event stream for messages of type "DeadLetter" _actorSystem.EventStream.Subscribe(deadletterWatchActorRef, typeof(DeadLetter)); }
/// <summary> /// /// </summary> /// <param name="settings"></param> /// <param name="streamListenerManagerActorContext"></param> /// <param name="adapterPlugin"></param> /// <param name="stateManager"></param> /// <param name="suspensionManager"></param> /// <param name="streamHealthCheckValidation"></param> /// <param name="fixtureValidation"></param> public StreamListenerBuilderActor( ISettings settings, IActorContext streamListenerManagerActorContext, IAdapterPlugin adapterPlugin, IStateManager stateManager, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _streamListenerManagerActorContext = streamListenerManagerActorContext ?? throw new ArgumentNullException(nameof(streamListenerManagerActorContext)); _adapterPlugin = adapterPlugin ?? throw new ArgumentNullException(nameof(adapterPlugin)); _stateManager = stateManager ?? throw new ArgumentNullException(nameof(stateManager)); _suspensionManager = suspensionManager ?? throw new ArgumentNullException(nameof(suspensionManager)); _streamHealthCheckValidation = streamHealthCheckValidation ?? throw new ArgumentNullException(nameof(streamHealthCheckValidation)); _fixtureValidation = fixtureValidation ?? throw new ArgumentNullException(nameof(fixtureValidation)); Context.System.Scheduler.ScheduleTellRepeatedly( CheckStateIntervalInMilliseconds, CheckStateIntervalInMilliseconds, Self, new CheckStreamListenerBuilderActorStateMsg(), Self); Active(); }
public Adapter( ISettings settings, IServiceFacade udapiServiceFacade, IAdapterPlugin platformConnector, IStateManager stateManager, IStateProvider stateProvider, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _udapiServiceFacade = udapiServiceFacade ?? throw new ArgumentNullException(nameof(udapiServiceFacade)); _platformConnector = platformConnector ?? throw new ArgumentNullException(nameof(platformConnector)); _stateManager = stateManager ?? throw new ArgumentNullException(nameof(stateManager)); _suspensionManager = suspensionManager ?? throw new ArgumentNullException(nameof(suspensionManager)); _streamHealthCheckValidation = streamHealthCheckValidation ?? throw new ArgumentNullException(nameof(streamHealthCheckValidation)); _fixtureValidation = fixtureValidation ?? throw new ArgumentNullException(nameof(fixtureValidation)); StateProviderProxy.Init(stateProvider); if (settings.StatsEnabled) { StatsManager.Configure(); } platformConnector.Initialise(); stateManager.AddRules(platformConnector.MarketRules); ThreadPool.SetMinThreads(500, 500); _stats = StatsManager.Instance["adapter.core"].GetHandle(); PopuplateAdapterVersionInfo(); }
/// <summary> /// /// </summary> /// <param name="settings"></param> /// <param name="adapterPlugin"></param> /// <param name="stateManager"></param> /// <param name="suspensionManager"></param> /// <param name="streamHealthCheckValidation"></param> /// <param name="fixtureValidation"></param> public StreamListenerManagerActor( ISettings settings, IAdapterPlugin adapterPlugin, IStateManager stateManager, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { _settings = settings ?? throw new ArgumentNullException(nameof(settings)); if (adapterPlugin == null) { throw new ArgumentNullException(nameof(adapterPlugin)); } if (stateManager == null) { throw new ArgumentNullException(nameof(stateManager)); } if (suspensionManager == null) { throw new ArgumentNullException(nameof(suspensionManager)); } _shouldSendProcessSportsMessage = true; _streamListenerBuilderActorRef = Context.ActorOf(Props.Create(() => new StreamListenerBuilderActor( settings, Context, adapterPlugin, stateManager, suspensionManager, streamHealthCheckValidation, fixtureValidation)), StreamListenerBuilderActor.ActorName); Receive <ProcessResourceMsg>(o => ProcessResourceMsgHandler(o)); Receive <StreamConnectedMsg>(o => StreamConnectedMsgHandler(o)); Receive <StreamDisconnectedMsg>(o => StreamDisconnectedMsgHandler(o)); Receive <StreamListenerStoppedMsg>(o => StreamListenerStoppedMsgHandler(o)); Receive <StartStreamingNotRespondingMsg>(o => StopStreamListenerChildActor(o.FixtureId)); Receive <StreamListenerInitializedMsg>(o => StreamListenerInitializedMsgHandler(o)); Receive <StreamListenerCreationFailedMsg>(o => StreamListenerCreationFailedMsgHandler(o)); Receive <StreamListenerCreationCancelledMsg>(o => StreamListenerCreationCancelledMsgHandler(o)); Receive <Terminated>(o => TerminatedHandler(o)); Receive <ResetSendProcessSportsMsg>(o => ResetSendProcessSportsMsgHandler(o)); Receive <RetrieveAndProcessSnapshotMsg>(o => RetrieveAndProcessSnapshotMsgHandler(o)); Receive <RestartStreamListenerMsg>(o => RestartStreamListenerMsgHandler(o)); Receive <ClearFixtureStateMsg>(o => ClearFixtureStateMsgHandler(o)); }
/// <summary> /// /// </summary> /// <param name="settings"></param> /// <param name="platformConnector"></param> /// <param name="resource"></param> /// <param name="stateManager"></param> /// <param name="suspensionManager"></param> /// <param name="streamHealthCheckValidation"></param> /// <param name="fixtureValidation"></param> public StreamListenerActor( ISettings settings, IAdapterPlugin platformConnector, IResourceFacade resource, IStateManager stateManager, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { try { _isInitializing = true; _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _platformConnector = platformConnector ?? throw new ArgumentNullException(nameof(platformConnector)); _resource = resource ?? throw new ArgumentNullException(nameof(resource)); _stateManager = stateManager ?? throw new ArgumentNullException(nameof(stateManager)); _suspensionManager = suspensionManager ?? throw new ArgumentNullException(nameof(suspensionManager)); _marketsRuleManager = _stateManager.CreateNewMarketRuleManager(resource.Id); _streamHealthCheckValidation = streamHealthCheckValidation ?? throw new ArgumentNullException(nameof(streamHealthCheckValidation)); _fixtureValidation = fixtureValidation ?? throw new ArgumentNullException(nameof(fixtureValidation)); _fixtureId = _resource.Id; _resourceActor = Context.ActorOf( Props.Create(() => new ResourceActor(Self, _resource)), ResourceActor.ActorName); _streamHealthCheckActor = Context.ActorOf( Props.Create(() => new StreamHealthCheckActor(_resource, _settings, _streamHealthCheckValidation)), StreamHealthCheckActor.ActorName); _streamStatsActor = Context.ActorOf( Props.Create(() => new StreamStatsActor()), StreamStatsActor.ActorName); Context.Parent.Tell(new NewStreamListenerActorMsg { FixtureId = _resource.Id, Sport = _resource.Sport }); Initialize(); } catch (Exception ex) { _logger.Error( $"Stream Listener instantiation failed for {_resource} - exception - {ex}"); _erroredException = ex; Become(Errored); } }
/// <summary> /// /// </summary> /// <param name="settings"></param> /// <param name="udApiService"></param> /// <param name="adapterPlugin"></param> /// <param name="stateManager"></param> /// <param name="suspensionManager"></param> /// <param name="streamHealthCheckValidation"></param> /// <param name="fixtureValidation"></param> public static void Init( ISettings settings, IServiceFacade udApiService, IAdapterPlugin adapterPlugin, IStateManager stateManager, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { _actorSystem = ActorSystem.Create("AdapterSystem"); var fileStoreProvider = new FileStoreProvider(settings.StateProviderPath); _fixtureStateActor = ActorSystem.ActorOf( Props.Create(() => new FixtureStateActor( settings, fileStoreProvider)), FixtureStateActor.ActorName); _streamListenerManagerActor = ActorSystem.ActorOf( Props.Create(() => new StreamListenerManagerActor( settings, adapterPlugin, stateManager, suspensionManager, streamHealthCheckValidation, fixtureValidation)), StreamListenerManagerActor.ActorName); _sportProcessorRouterActor = ActorSystem.ActorOf( Props.Create(() => new SportProcessorRouterActor(udApiService)) .WithRouter(new SmallestMailboxPool(settings.FixtureCreationConcurrency)), SportProcessorRouterActor.ActorName); _sportsProcessorActor = ActorSystem.ActorOf( Props.Create(() => new SportsProcessorActor( settings, udApiService, _sportProcessorRouterActor)), SportsProcessorActor.ActorName); }
private static void CreateStreamListenerManagerActor(ISettings settings, IAdapterPlugin adapterPlugin, IStateManager stateManager, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { try { _streamListenerManagerActor = ActorSystem.ActorOf( Props.Create(() => new StreamListenerManagerActor( settings, adapterPlugin, stateManager, suspensionManager, streamHealthCheckValidation, fixtureValidation)), StreamListenerManagerActor.ActorName); } catch (Exception e) { _logger.Fatal($"Error creating StreamListenerManagerActor {e}"); throw; } }
protected ApplicationSettings(ISuspensionManager suspensionManager, IBackgroundDownloader backgroundDownloader) { _suspensionManager = suspensionManager; _backgroundDownloader = backgroundDownloader; }
/// <summary> /// /// </summary> /// <param name="settings"></param> /// <param name="adapterPlugin"></param> /// <param name="stateManager"></param> /// <param name="suspensionManager"></param> /// <param name="streamHealthCheckValidation"></param> /// <param name="fixtureValidation"></param> public StreamListenerManagerActor( ISettings settings, IAdapterPlugin adapterPlugin, IStateManager stateManager, ISuspensionManager suspensionManager, IStreamHealthCheckValidation streamHealthCheckValidation, IFixtureValidation fixtureValidation) { _settings = settings ?? throw new ArgumentNullException(nameof(settings)); if (adapterPlugin == null) { throw new ArgumentNullException(nameof(adapterPlugin)); } if (stateManager == null) { throw new ArgumentNullException(nameof(stateManager)); } if (suspensionManager == null) { throw new ArgumentNullException(nameof(suspensionManager)); } _shouldSendProcessSportsMessage = true; _streamListenerBuilderActorRef = Context.ActorOf(Props.Create(() => new StreamListenerBuilderActor( settings, Context, adapterPlugin, stateManager, suspensionManager, streamHealthCheckValidation, fixtureValidation)), StreamListenerBuilderActor.ActorName); _streamListeners = new Dictionary <string, Dictionary <string, StreamListenerState> >(); _logPublishedFixturesCountsMsgSchedule = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable( TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(30), Self, new LogPublishedFixturesCountsMsg(), Self); Receive <RegisterDelayMsg>(o => RegisterDelayMsgHandler(o)); Receive <ProcessResourceMsg>(o => ProcessResourceMsgHandler(o)); Receive <StreamConnectedMsg>(o => StreamConnectedMsgHandler(o)); Receive <StreamDisconnectedMsg>(o => StreamDisconnectedMsgHandler(o)); Receive <StreamListenerStoppedMsg>(o => StreamListenerStoppedMsgHandler(o)); Receive <StartStreamingNotRespondingMsg>(o => StopStreamListenerChildActor(o.FixtureId)); Receive <StreamListenerInitializedMsg>(o => StreamListenerInitializedMsgHandler(o)); Receive <StreamListenerCreationFailedMsg>(o => StreamListenerCreationFailedMsgHandler(o)); Receive <StreamListenerCreationCancelledMsg>(o => StreamListenerCreationCancelledMsgHandler(o)); Receive <Terminated>(o => TerminatedHandler(o)); Receive <ResetSendProcessSportsMsg>(o => ResetSendProcessSportsMsgHandler(o)); Receive <RetrieveAndProcessSnapshotMsg>(o => RetrieveAndProcessSnapshotMsgHandler(o)); Receive <RestartStreamListenerMsg>(o => RestartStreamListenerMsgHandler(o)); Receive <ClearFixtureStateMsg>(o => ClearFixtureStateMsgHandler(o)); Receive <NewStreamListenerActorMsg>(o => NewStreamListenerActorMsgHandler(o)); Receive <StreamListenerActorStateChangedMsg>(o => StreamListenerActorStateChangedMsgHandler(o)); Receive <LogPublishedFixturesCountsMsg>(o => LogPublishedFixturesCountsMsgHandler(o)); Receive <RegisterSdkErrorActorMessage>(a => RegisterSdkErrorActor()); Receive <SdkErrorMessage>(a => FaultControllerActorOnErrorOcured(a)); Receive <PathMessage>(a => { _logger.Info("PathMessage delivered"); }); Context.System.Scheduler.ScheduleTellRepeatedly(new TimeSpan(0, 1, 0), new TimeSpan(0, 1, 0), Self, new RegisterSdkErrorActorMessage(), Self); }