Exemplo n.º 1
0
        protected override async Task SetupJobManager(CancellationToken ct)
        {
            manager = ctx.Resolve <BitcoinJobManager>(
                new TypedParameter(typeof(IExtraNonceProvider), new BitcoinExtraNonceProvider()));

            manager.Configure(poolConfig, clusterConfig);

            await manager.StartAsync(ct);

            if (poolConfig.EnableInternalStratum == true)
            {
                disposables.Add(manager.Jobs
                                .Select(x => Observable.FromAsync(() => OnNewJobAsync(x)))
                                .Concat()
                                .Subscribe(_ => { }, ex =>
                {
                    logger.Debug(ex, nameof(OnNewJobAsync));
                }));

                // we need work before opening the gates
                await manager.Jobs.Take(1).ToTask(ct);
            }

            else
            {
                // keep updating NetworkStats
                disposables.Add(manager.Jobs.Subscribe());
            }
        }
Exemplo n.º 2
0
        protected override async Task SetupJobManager(CancellationToken ct)
        {
            manager = ctx.Resolve <BitcoinJobManager>(
                new TypedParameter(typeof(IExtraNonceProvider), new BitcoinExtraNonceProvider(poolConfig.Id, clusterConfig.InstanceId)));

            manager.Configure(poolConfig, clusterConfig);

            await manager.StartAsync(ct);

            if (poolConfig.EnableInternalStratum == true)
            {
                disposables.Add(manager.Jobs
                                .Select(job => Observable.FromAsync(() =>
                                                                    Guard(() => OnNewJobAsync(job),
                                                                          ex => logger.Debug(() => $"{nameof(OnNewJobAsync)}: {ex.Message}"))))
                                .Concat()
                                .Subscribe(_ => { }, ex =>
                {
                    logger.Debug(ex, nameof(OnNewJobAsync));
                }));

                // start with initial blocktemplate
                await manager.Jobs.Take(1).ToTask(ct);
            }

            else
            {
                // keep updating NetworkStats
                disposables.Add(manager.Jobs.Subscribe());
            }
        }