Ejemplo n.º 1
0
        public async Task <IEnumerable <string> > RegisterNodeAsync(bool isPullNode)
        {
            var nodeRequest = new RegisterNodeRequest
            {
                RequestId  = Guid.NewGuid().ToString(),
                DeviceId   = DeviceId,
                NodeName   = NodeName,
                IsPullNode = isPullNode,
            };

            _logger?.Information($"Creating Register Node Request for {DeviceId}. (Name: {NodeName}, IsPullNode: {isPullNode})");

            try
            {
                var response = await Client.RegisterNodeAsync(nodeRequest);

                if (response.Successful)
                {
                    _logger?.Information($"Register Node Request Successful.");
                }
                else
                {
                    _logger?.Error($"Register Node Request Not Successful.");
                }

                return(response.PullNodeList);
            }
            catch (Exception ex)
            {
                Log.Error(ex, ex.Message);
                throw;
            }
        }
Ejemplo n.º 2
0
        public Task <RegisterNodeResponse> HandleRegisterNodeRequest(RegisterNodeRequest request)
        {
            _logger?.Information($"Register Node Request Received " +
                                 $"(Node Name: {request.NodeName}, " +
                                 $"Device ID: {request.DeviceId}, " +
                                 $"Is Pull Node: {request.IsPullNode}).");

            var node = _nodeRepository.GetNode(request.NodeName, request.DeviceId, request.IsPullNode);

            var response = new RegisterNodeResponse
            {
                RequestId  = request.RequestId,
                NodeName   = node.NodeName,
                Successful = true
            };

            var pullNodes = _nodeRepository
                            .PullNodes
                            .Select(x => x.NodeName)
                            .ToList();

            response.PullNodeList.AddRange(pullNodes);

            _logger?.Information($"Sending Response to {response.NodeName} " +
                                 $"(Is Successful = {response.Successful}).");

            return(Task.FromResult(response));
        }
Ejemplo n.º 3
0
        public async Task <JsonResult> Register([FromBody] RegisterNodeRequest request)
        {
            return(await ProcessRequest(async() =>
            {
                if (request.NodeAddresses == null || request.NodeAddresses.Count == 0)
                {
                    return GenerateBadRequestResponse(new ArgumentException("Node addresses are required"));
                }

                var response = _localBlockChain.RegisterNodes(request.NodeAddresses);

                return GenerateOkResponse(response);
            }));
        }
Ejemplo n.º 4
0
        public IHttpActionResult RegisterNode([FromBody] RegisterNodeRequest request)
        {
            if (request.Nodes.Count < 1)
            {
                return(BadRequest("Please supply valid list of nodes"));
            }

            RegisterNodes(request.Nodes);

            var response = new RegisterNodeResponse()
            {
                Message    = "New nodes have been added",
                TotalNodes = _nodes
            };

            return(Json(response));
        }
Ejemplo n.º 5
0
 public override Task <RegisterNodeResponse> RegisterNode(RegisterNodeRequest request, ServerCallContext context)
 {
     return(_requestHandler.HandleRegisterNodeRequest(request));
 }