Esempio n. 1
0
    private async Task PersistSharesCoreAsync(IList <Share> shares)
    {
        await cf.RunTx(async (con, tx) =>
        {
            // Insert shares
            var mapped = shares.Select(mapper.Map <Persistence.Model.Share>).ToArray();
            await shareRepo.BatchInsertAsync(con, tx, mapped, CancellationToken.None);

            // Insert blocks
            foreach (var share in shares)
            {
                if (!share.IsBlockCandidate)
                {
                    continue;
                }

                var blockEntity    = mapper.Map <Block>(share);
                blockEntity.Status = BlockStatus.Pending;
                await blockRepo.InsertAsync(con, tx, blockEntity);

                if (pools.TryGetValue(share.PoolId, out var poolConfig))
                {
                    messageBus.NotifyBlockFound(share.PoolId, blockEntity, poolConfig.Template);
                }
                else
                {
                    logger.Warn(() => $"Block found for unknown pool {share.PoolId}");
                }
            }
        });
    }
Esempio n. 2
0
        private async Task PersistSharesCoreAsync(IList <Share> shares)
        {
            await cf.RunTx(async (con, tx) =>
            {
                // Insert shares
                var mapped = shares.Select(mapper.Map <Persistence.Model.Share>).ToArray();
                await shareRepo.BatchInsertAsync(con, tx, mapped);

                // Insert blocks
                foreach (var share in shares)
                {
                    if (!share.IsBlockCandidate)
                    {
                        continue;
                    }

                    var blockEntity    = mapper.Map <Block>(share);
                    blockEntity.Status = BlockStatus.Pending;
                    await blockRepo.InsertAsync(con, tx, blockEntity);

                    messageBus.NotifyBlockFound(share.PoolId, blockEntity, pools[share.PoolId].Template);
                }
            });
        }