public async Task HandleAsync()
        {
            var nodeKey = await keysService.GetNodeKeysAsync(notice.Block.NodeId, notice.Block.Header.SignKeyId.GetValueOrDefault()).ConfigureAwait(false);

            if (await BlocksService.AcceptOrRejectNewBlockAsync(notice.Block, nodeKey?.SignPublicKey, NodeData.Instance.NodeKeys.Password).ConfigureAwait(false))
            {
                BlockGenerationHelper.Instance.HandleNewBlock(notice.Block);
                await dataRestorer.SaveBlockDataAsync(notice.Block).ConfigureAwait(false);
            }
        }
        private IBlocksService BuildBlockPostMock()
        {
            var requestSenderMock = new Mock <IHttpRequestSender>();

            requestSenderMock.Setup(s => s.PostAsync(It.IsAny <string>(), It.IsAny <HttpContent>()))
            .ReturnsAsync(new HttpResponseMessage(System.Net.HttpStatusCode.Created));

            IBlocksService service = new BlocksService(requestSenderMock.Object);

            return(service);
        }
        private IBlocksService BuildBlockGetMock()
        {
            var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);

            response.Content = new StringContent(JsonConvert.SerializeObject(CreateMockBlock()), Encoding.UTF8,
                                                 "application/json");
            var requestSenderMock = new Mock <IHttpRequestSender>();

            requestSenderMock
            .Setup(s => s.GetAsync(It.IsAny <string>()))
            .ReturnsAsync(response);

            IBlocksService service = new BlocksService(requestSenderMock.Object);

            return(service);
        }
예제 #4
0
    void Start()
    {
        blocks                      = new List <GameObject>();
        userId                      = System.Guid.NewGuid().ToString();
        blocksService               = new BlocksService(userId);
        blocksService.BlockAdded   += new BlockAddEventHandler(handleBlockAdded);
        blocksService.BlockRemoved += new BlockRemoveEventHandler(handleBlockRemoved);
        blocksService.Start();
        blockTypeToGameObject    = new Dictionary <int, GameObject>();
        blockTypeToGameObject[0] = Block0;
        blockTypeToGameObject[1] = Block1;
        blockTypeToGameObject[2] = Block2;
        blockTypeToGameObject[3] = Block3;
        blockTypeToGameObject[4] = Block4;


        blockUtilities = new BlockUtilities();
    }
예제 #5
0
        private async Task BeginBlockGenerationAsync()
        {
            if (blockGenerationTask == null || blockGenerationTask.IsCompleted)
            {
                IEnumerable <BlockSegmentVm> blockSegments;
                List <BlockSegmentVm>        resultBlockSegments = new List <BlockSegmentVm>();
                blockSegments = await cacheService.GetBlockSegments(MAX_BLOCK_SEGMENTS_COUNT).ConfigureAwait(false);

                resultBlockSegments.AddRange(await BlockSegmentsService.Instance.GetNonExistingSemgentsAsync(blockSegments).ConfigureAwait(false));
                var block = await BlocksService.FormFullBlockAsync(resultBlockSegments, NodeSettings.Configs.Node.Id).ConfigureAwait(false);

                currentSegments     = resultBlockSegments;
                blockGenerationTask = Task <BlockVm> .Factory.StartNew(GenerateBlock, block, blockGenerationCancellToken);

                try
                {
                    BlockVm generatedBlock = await blockGenerationTask.ConfigureAwait(true);

                    NodeNoticeService.SendNewBlockNodeNoticeAsync(generatedBlock);
                    await LicensorClient.Instance.AddNewBlockAsync(generatedBlock).ConfigureAwait(false);
                }
                catch (BlockGenerationException)
                {
                    blockGenerationTask.Dispose();
                    cancellationTokenSource     = new CancellationTokenSource();
                    blockGenerationCancellToken = cancellationTokenSource.Token;
                }
                catch (TaskCanceledException)
                {
                    blockGenerationTask.Dispose();
                    cancellationTokenSource     = new CancellationTokenSource();
                    blockGenerationCancellToken = cancellationTokenSource.Token;
                }
                catch (Exception ex)
                {
                    Logger.WriteLog(ex);
                }
                finally
                {
                    blockGenerationTask = null;
                }
            }
        }
예제 #6
0
 public BlocksController(BlocksService bs, SetsService ss)
 {
     _bs = bs;
     _ss = ss;
 }
예제 #7
0
 public BlocksController(BlocksService bs)
 {
     _bs = bs;
 }