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>(); }
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(); }); }
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(); }