public void CreateCrossChainClient_Test() { var remoteChainId = ChainOptions.ChainId; var localChainId = ChainHelper.GetChainId(1); var host = "127.0.0.1"; var port = 5000; var crossChainClientDto = new CrossChainClientDto { LocalChainId = localChainId, RemoteChainId = remoteChainId, IsClientToParentChain = false, RemoteServerHost = host, RemoteServerPort = port }; var client = _grpcCrossChainClientProvider.CreateCrossChainClient(crossChainClientDto); var isClientCached = _grpcCrossChainClientProvider.TryGetClient(remoteChainId, out _); Assert.False(isClientCached); Assert.True(client.RemoteChainId == remoteChainId); Assert.False(client.IsConnected); Assert.Equal(remoteChainId, client.RemoteChainId); var expectedUriStr = string.Concat(host, ":", "5000"); Assert.Equal(expectedUriStr, client.TargetUriString); }
public async Task CreateClient_Test() { var remoteChainId = ChainOptions.ChainId; var localChainId = ChainHelper.GetChainId(1); var host = "127.0.0.1"; var port = 5100; await Server.StartAsync(port); var fakeCrossChainClient = new CrossChainClientDto { LocalChainId = localChainId, RemoteChainId = remoteChainId, IsClientToParentChain = false, RemoteServerHost = host, RemoteServerPort = port }; await _crossChainClientService.CreateClientAsync(fakeCrossChainClient); var res = _grpcCrossChainClientProvider.TryGetClient(remoteChainId, out var client); Assert.True(res); await client.ConnectAsync(); Assert.True(client.IsConnected); await _crossChainClientService.CloseClientsAsync(); Server.Dispose(); }
public async Task CreateClientAsync(CrossChainClientDto crossChainClientDto) { Logger.LogDebug( $"Handle cross chain request received event from chain {ChainHelper.ConvertChainIdToBase58(crossChainClientDto.RemoteChainId)}."); crossChainClientDto.LocalChainId = _localChainId; await _crossChainClientService.CreateClientAsync(crossChainClientDto); }
public async Task <ChainInitializationData> RequestChainInitializationData(int chainId) { var crossChainClientDto = new CrossChainClientDto { IsClientToParentChain = true, LocalChainId = chainId }; var client = _crossChainClientProvider.CreateCrossChainClient(crossChainClientDto); return(await client.RequestChainInitializationDataAsync(chainId)); }
public void CreateAndCacheClient(int chainId, bool toParenChain, int port, int remoteChainId = 0) { var fakeCrossChainClient = new CrossChainClientDto { LocalChainId = chainId, RemoteChainId = remoteChainId, IsClientToParentChain = toParenChain, RemoteServerHost = "localhost", RemoteServerPort = port }; _grpcCrossChainClientProvider.AddOrUpdateClient(fakeCrossChainClient); }
public ICrossChainClient AddOrUpdateClient(CrossChainClientDto crossChainClientDto) { var chainId = crossChainClientDto.RemoteChainId; var uriStr = crossChainClientDto.IsClientToParentChain ? GetUriStr(_grpcCrossChainConfigOption.RemoteParentChainServerHost, _grpcCrossChainConfigOption.RemoteParentChainServerPort) : GetUriStr(crossChainClientDto.RemoteServerHost, crossChainClientDto.RemoteServerPort); if (TryGetClient(chainId, out var client) && client.TargetUriString.Equals(uriStr)) { return(client); // client already cached } client = CreateCrossChainClient(crossChainClientDto); _grpcCrossChainClients.TryAdd(chainId, client); Logger.LogTrace("Create client finished."); return(client); }
/// <summary> /// Create a new client to another chain. /// </summary> /// <returns> /// </returns> public ICrossChainClient CreateCrossChainClient(CrossChainClientDto crossChainClientDto) { var clientInitializationContext = new GrpcClientInitializationContext { DialTimeout = _grpcCrossChainConfigOption.ConnectionTimeout, LocalChainId = crossChainClientDto.LocalChainId, ListeningPort = _grpcCrossChainConfigOption.ListeningPort, RemoteChainId = crossChainClientDto.RemoteChainId }; if (crossChainClientDto.IsClientToParentChain) { clientInitializationContext.UriStr = GetUriStr(_grpcCrossChainConfigOption.ParentChainServerIp, _grpcCrossChainConfigOption.ParentChainServerPort); return(new ClientForParentChain(clientInitializationContext)); } clientInitializationContext.UriStr = GetUriStr(crossChainClientDto.RemoteServerHost, crossChainClientDto.RemoteServerPort); return(new ClientForSideChain(clientInitializationContext)); }
public void TryGetClient_Test() { var remoteChainId = ChainOptions.ChainId; var localChainId = ChainHelper.GetChainId(1); var host = "127.0.0.1"; var port = 5000; var crossChainClientDto = new CrossChainClientDto { LocalChainId = localChainId, RemoteChainId = remoteChainId, IsClientToParentChain = false, RemoteServerHost = host, RemoteServerPort = port }; var client = _grpcCrossChainClientProvider.AddOrUpdateClient(crossChainClientDto); var isClientCached = _grpcCrossChainClientProvider.TryGetClient(remoteChainId, out var clientInCache); Assert.True(isClientCached); Assert.Equal(client, clientInCache); }
public void GetAllClients_Test() { var remoteChainId = ChainOptions.ChainId; var localChainId = ChainHelper.GetChainId(1); var host = "127.0.0.1"; var port = 5000; var crossChainClientDto = new CrossChainClientDto { LocalChainId = localChainId, RemoteChainId = remoteChainId, IsClientToParentChain = false, RemoteServerHost = host, RemoteServerPort = port }; var client = _grpcCrossChainClientProvider.AddOrUpdateClient(crossChainClientDto); var clients = _grpcCrossChainClientProvider.GetAllClients(); Assert.Single(clients); Assert.Equal(client, clients[0]); }
public async Task CreateClient_Test() { var remoteChainId = ChainOptions.ChainId; var localChainId = ChainHelper.GetChainId(1); var host = "127.0.0.1"; var port = 5000; var fakeCrossChainClient = new CrossChainClientDto { LocalChainId = localChainId, RemoteChainId = remoteChainId, IsClientToParentChain = false, RemoteServerHost = host, RemoteServerPort = port }; await _crossChainClientService.CreateClientAsync(fakeCrossChainClient); var res = _grpcCrossChainClientProvider.TryGetClient(remoteChainId, out _); Assert.True(res); }
public Task CreateClientAsync(CrossChainClientDto crossChainClientDto) { _crossChainClientProvider.AddOrUpdateClient(crossChainClientDto); return(Task.CompletedTask); }
public async Task CreateClientAsync(CrossChainClientDto crossChainClientDto) { crossChainClientDto.LocalChainId = _localChainId; await _crossChainClientService.CreateClientAsync(crossChainClientDto); }
public async Task CreateClientAsync(CrossChainClientDto crossChainClientDto) { var crossChainClient = _crossChainClientProvider.AddOrUpdateClient(crossChainClientDto); _ = ConnectAsync(crossChainClient); }