private static async Task Start() { shareRecorder = container.Resolve <RewardRecorder>(); shareRecorder.Start(clusterConfig); if (clusterConfig.Api == null || clusterConfig.Api.Enabled) { apiServer = container.Resolve <RestfulApiServer>(); apiServer.Start(clusterConfig); } if (clusterConfig.PaymentProcessing?.Enabled == true && clusterConfig.Pools.Any(x => x.PaymentProcessing?.Enabled == true)) { payoutManager = container.Resolve <PayoutManager>(); payoutManager.Configure(clusterConfig); payoutManager.Start(); } else { logger.Info("Payment processing is not enabled"); } statsRecorder = container.Resolve <StatsRecorder>(); statsRecorder.Configure(clusterConfig); statsRecorder.Start(); await Task.WhenAll(clusterConfig.Pools.Where(x => x.Enabled).Select(async poolConfig => { var poolImpl = container.Resolve <IEnumerable <Meta <Lazy <IMiningPool, CoinMetadataAttribute> > > >() .First(x => x.Value.Metadata.SupportedCoins.Contains(poolConfig.Coin.Type)).Value; var pool = poolImpl.Value; pool.Configure(poolConfig, clusterConfig); statsRecorder?.AttachPool(pool); await pool.StartAsync(cts.Token); })); await Observable.Never <Unit>().ToTask(cts.Token); }
private static void RecoverShares(string recoveryFilename) { shareRecorder = container.Resolve <RewardRecorder>(); shareRecorder.RecoverShares(clusterConfig, recoveryFilename); }