public ExchangeService(IContextHolder contextHolder, ITransferRequestRepository iTransferRequestRepository, IConnectionFactory iConnectionFactory, JsonSerializerSettings jsonSerializerSettings, DaemonClientFactory daemonClientFactory, PayoutManager payoutManager, IJobManager jobManager) { _contextHolder = contextHolder; _iTransferRequestRepository = iTransferRequestRepository; _iConnectionFactory = iConnectionFactory; _jsonSerializerSettings = jsonSerializerSettings; _daemonClientFactory = daemonClientFactory; _payoutManager = payoutManager; _jobManager = jobManager; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; IJobManager jobManager = new JobManager(); IExchangeRateProvider exchangeRateProvider = new BitfinexExchangeRateProvider(); IContextHolder contextHolder = new ContextHolder(Configuration, jsonSerializerSettings); DaemonClientFactory daemonClientFactory = new DaemonClientFactory(contextHolder, jsonSerializerSettings); IConnectionFactory dbFactory = new PgConnectionFactory(contextHolder); ITransferRequestRepository transferRequestRepository = new TransferRequestRepository(); ITransferRepository transferRepository = new TransferRepository(); NotificationService notificationService = new NotificationService(contextHolder, jsonSerializerSettings); services.AddSingleton <IContextHolder>(contextHolder); services.AddSingleton <IExchangeRateProvider>(exchangeRateProvider); services.AddSingleton <IJobManager>(jobManager); services.AddSingleton <JsonSerializerSettings>(jsonSerializerSettings); services.AddSingleton <DaemonClientFactory>(daemonClientFactory); services.AddSingleton <IConnectionFactory>(dbFactory); services.AddSingleton <ITransferRequestRepository>(transferRequestRepository); services.AddSingleton <ITransferRepository>(transferRepository); services.AddSingleton <NotificationService>(notificationService); jobManager.Start(); //Lazy load, requires explicit instantiation ExchangeRateUpdater exchangeRateUpdater = new ExchangeRateUpdater(jobManager, exchangeRateProvider, contextHolder); PayoutManager payoutManager = new PayoutManager(jobManager, contextHolder, transferRequestRepository, transferRepository, dbFactory, jsonSerializerSettings, daemonClientFactory, notificationService); services.Configure <IISOptions>(options => { options.ForwardClientCertificate = false; }); services.AddSingleton <PayoutManager>(payoutManager); services.RegisterServices(); // Add framework services. services.AddMvc(); }
public PayoutManager(IJobManager jobManager, IContextHolder contextHolder, ITransferRequestRepository iTransferRequestRepository, ITransferRepository iTransferRepository, IConnectionFactory iConnectionFactory, JsonSerializerSettings jsonSerializerSettings, DaemonClientFactory daemonClientFactory, NotificationService notificationService) { _jobManager = jobManager; _contextHolder = contextHolder; _iTransferRequestRepository = iTransferRequestRepository; _iTransferRepository = iTransferRepository; _iConnectionFactory = iConnectionFactory; _jsonSerializerSettings = jsonSerializerSettings; _daemonClientFactory = daemonClientFactory; _notificationService = notificationService; _updatingThroughput = false; LastExecuted = DateTime.Now.AddSeconds(-RepetitionIntervalInSeconds * 2); _jobManager.Add(this); }