Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 private static void RecoverShares(string recoveryFilename)
 {
     shareRecorder = container.Resolve <RewardRecorder>();
     shareRecorder.RecoverShares(clusterConfig, recoveryFilename);
 }