protected override void Load(ContainerBuilder builder) { builder.RegisterType <HealthService>() .As <IHealthService>() .SingleInstance(); builder.RegisterType <StartupManager>() .As <IStartupManager>(); builder.RegisterType <ShutdownManager>() .As <IShutdownManager>(); builder.RegisterInstance(new AssetsService(new Uri(_assetServiceClientSettings.ServiceUrl), new HttpClient())) .As <IAssetsService>() .SingleInstance(); builder.RegisterChaosKitty(_settings.ChaosKitty); foreach (var assetSettings in _settings.Cashout.Assets) { var periodicalHandlerSettings = new HeartbeatCashoutPeriodicalHandlerSettings { Amount = assetSettings.Amount, AssetId = assetSettings.AssetId, ToAddress = assetSettings.ToAddress, ToAddressExtension = assetSettings.ToAddressExtensions, MaxCashoutInactivePeriod = assetSettings.MaxCashoutInactivePeriod, ClientId = _settings.Cashout.User.ClientId, FeeCashoutTargetClientId = _settings.Cashout.FeeCashoutTargetClientId, ClientBalance = _settings.Cashout.User.Balance, ExecutionTimeout = assetSettings.ExecutionTimeout, }; builder.RegisterType <HeartbeatCashoutStarterPeriodicalHandler>() .WithParameter(TypedParameter.From(periodicalHandlerSettings)) .WithParameter(TypedParameter.From(_settings.Cashout.TimerPeriod)) .As <IStartable>() .SingleInstance(); builder.RegisterType <HeartbeatCashoutTimeoutFinisherPeriodicalHandler>() .WithParameter(TypedParameter.From(periodicalHandlerSettings)) .WithParameter(TypedParameter.From(assetSettings.ExecutionTimeoutTimerPeriod)) .As <IStartable>() .SingleInstance(); } }
public HeartbeatCashoutTimeoutFinisherPeriodicalHandler(HeartbeatCashoutPeriodicalHandlerSettings settings, TimeSpan timerPeriod, ILogFactory logFactory, ICqrsEngine cqrsEngine, ICashoutLockRepository cashoutLockRepository) { _settings = settings; _cqrsEngine = cqrsEngine; _cashoutLockRepository = cashoutLockRepository; _log = logFactory.CreateLog(this); _timer = new TimerTrigger( $"{nameof(HeartbeatCashoutStarterPeriodicalHandler)} : {settings.AssetId}", timerPeriod, logFactory); _timer.Triggered += Execute; }