Esempio n. 1
0
        public async Task <bool> ConnectAsync(PeerId peerIdentifier)
        {
            _recipientPeerId = peerIdentifier;

            var peerRpcConfig = new RpcClientSettings
            {
                HostAddress = _recipientPeerId.IpAddress,
                Port        = (int)_recipientPeerId.Port,
                PublicKey   = _recipientPeerId.PublicKey.KeyToString()
            };

            _logger.Information($"Connecting to {peerRpcConfig.HostAddress}:{peerRpcConfig.Port}");

            try
            {
                _rpcClient =
                    await _rpcClientFactory.GetClientAsync(_certificate, peerRpcConfig).ConfigureAwait(false);

                return(_rpcClient.Channel.Open);
            }
            catch (ConnectException connectionException)
            {
                _logger.Error(connectionException, "Could not connect to node");
            }
            catch (Exception exception)
            {
                _logger.Error(exception, "Error attempting to connect to node");
            }

            return(false);
        }
        public async Task GetClient_Should_Return_RpcClient()
        {
            var nodeRpcConfig = Substitute.For <IRpcClientConfig>();

            nodeRpcConfig.HostAddress = IPAddress.Any;
            nodeRpcConfig.NodeId      = "0";
            nodeRpcConfig.PfxFileName = "pfx";
            nodeRpcConfig.Port        = 9000;
            var rpcClient = await _rpcClientFactory.GetClientAsync(null, nodeRpcConfig);

            rpcClient.Should().BeAssignableTo <IRpcClient>();
        }
Esempio n. 3
0
        public async Task SubscribeToResponse_Without_Response_Handler_Should_Throw_Exception()
        {
            var nodeRpcClientFactory = new RpcClientFactory(_channelFactory, _clientEventLoopGroupFactory,
                                                            new List <IRpcResponseObserver>());
            var nodeRpcClient = await nodeRpcClientFactory.GetClientAsync(null, _rpcClientConfig);

            var targetVersionResponse = new VersionResponse {
                Version = "1.2.3.4"
            };
            var protocolMessage =
                targetVersionResponse.ToProtocolMessage(_peerIdentifier, CorrelationId.GenerateCorrelationId());
            var observerDto = new ObserverDto(_channelHandlerContext, protocolMessage);

            Assert.Throws <ResponseHandlerDoesNotExistException>(() =>
            {
                _mockSocketReplySubject.OnNext(observerDto);
                nodeRpcClient.SubscribeToResponse <VersionResponse>(response => { });
                _testScheduler.Start();
            });
        }
Esempio n. 4
0
        public async Task SubscribeToResponse_Should_Not_Return_Invalid_Response()
        {
            var nodeRpcClientFactory = new RpcClientFactory(_channelFactory, _clientEventLoopGroupFactory,
                                                            new List <IRpcResponseObserver> {
                new GetVersionResponseObserver(_logger)
            });
            var nodeRpcClient = await nodeRpcClientFactory.GetClientAsync(null, _rpcClientConfig);

            var receivedResponse      = false;
            var targetVersionResponse = new VersionResponse {
                Version = "1.2.3.4"
            };
            var protocolMessage =
                targetVersionResponse.ToProtocolMessage(_peerIdentifier, CorrelationId.GenerateCorrelationId());
            var observerDto = new ObserverDto(_channelHandlerContext, protocolMessage);

            _mockSocketReplySubject.OnNext(observerDto);
            nodeRpcClient.SubscribeToResponse <GetDeltaResponse>(response => receivedResponse = true);
            _testScheduler.Start();

            receivedResponse.Should().BeFalse();
        }