Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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));
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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]);
        }
Esempio n. 10
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);
        }
Esempio n. 11
0
 public Task CreateClientAsync(CrossChainClientDto crossChainClientDto)
 {
     _crossChainClientProvider.AddOrUpdateClient(crossChainClientDto);
     return(Task.CompletedTask);
 }
 public async Task CreateClientAsync(CrossChainClientDto crossChainClientDto)
 {
     crossChainClientDto.LocalChainId = _localChainId;
     await _crossChainClientService.CreateClientAsync(crossChainClientDto);
 }
Esempio n. 13
0
        public async Task CreateClientAsync(CrossChainClientDto crossChainClientDto)
        {
            var crossChainClient = _crossChainClientProvider.AddOrUpdateClient(crossChainClientDto);

            _ = ConnectAsync(crossChainClient);
        }