コード例 #1
0
        /// <summary>
        /// Creates a channel/client pair with the appropriate options and interceptors.
        /// </summary>
        /// <returns>A tuple of the channel and client</returns>
        private async Task <GrpcClient> CreateClientAsync(DnsEndPoint remoteEndpoint)
        {
            var certificate = await RetrieveServerCertificateAsync(remoteEndpoint);

            if (certificate == null)
            {
                return(null);
            }

            Logger.LogDebug($"Upgrading connection to TLS: {certificate}.");
            ChannelCredentials credentials = new SslCredentials(TlsHelper.ObjectToPem(certificate), _clientKeyCertificatePair);

            var channel = new Channel(remoteEndpoint.ToString(), credentials, new List <ChannelOption>
            {
                new ChannelOption(ChannelOptions.MaxSendMessageLength, GrpcConstants.DefaultMaxSendMessageLength),
                new ChannelOption(ChannelOptions.MaxReceiveMessageLength, GrpcConstants.DefaultMaxReceiveMessageLength),
                new ChannelOption(ChannelOptions.SslTargetNameOverride, GrpcConstants.DefaultTlsCommonName)
            });

            var nodePubkey = AsyncHelper.RunSync(() => _accountService.GetPublicKeyAsync()).ToHex();

            var interceptedChannel = channel.Intercept(metadata =>
            {
                metadata.Add(GrpcConstants.PubkeyMetadataKey, nodePubkey);
                return(metadata);
            }).Intercept(new RetryInterceptor());

            var client = new PeerService.PeerServiceClient(interceptedChannel);

            return(new GrpcClient(channel, client, certificate));
        }
コード例 #2
0
        public void Test3()
        {
            var ep = new DnsEndPoint("digicert.tt.omtrdc.net", 443);

            Assert.AreEqual(443, ep.Port);
            Assert.AreEqual("digicert.tt.omtrdc.net", ep.Host);
            Assert.AreEqual("omtrdc.net", ep.Domain);
            Assert.AreEqual("*.tt.omtrdc.net", ep.WildcardDomain);
            Assert.AreEqual("digicert.tt.omtrdc.net:443", ep.ToString());
        }
コード例 #3
0
        public void Test2()
        {
            var ep = new DnsEndPoint("google.com", 443);

            Assert.AreEqual(443, ep.Port);
            Assert.AreEqual("google.com", ep.Host);
            Assert.AreEqual("google.com", ep.Domain);
            Assert.AreEqual("*.google.com", ep.WildcardDomain);
            Assert.AreEqual("google.com:443", ep.ToString());
        }
コード例 #4
0
        public void Test1()
        {
            var ep = new DnsEndPoint("www.google.com", 80);

            Assert.AreEqual(80, ep.Port);
            Assert.AreEqual("www.google.com", ep.Host);
            Assert.AreEqual("google.com", ep.Domain);
            Assert.AreEqual("*.google.com", ep.WildcardDomain);
            Assert.AreEqual("www.google.com:80", ep.ToString());
        }
コード例 #5
0
        public static String ToSimpleUdpEpStr(this DnsEndPoint ep)
        {
            string epStr = ep.ToString();

            if (epStr.Contains('/'))
            {
                epStr = epStr.Split('/').LastOrDefault();
            }
            return(epStr);
        }
コード例 #6
0
        public void InterNetwork()
        {
            DnsEndPoint dep = new DnsEndPoint("localhost", 0, AddressFamily.InterNetwork);

            Assert.AreEqual("localhost", dep.Host, "Host");
            Assert.AreEqual(AddressFamily.InterNetwork, dep.AddressFamily, "AddressFamily");
            Assert.AreEqual("localhost", dep.Host, "Host");
            Assert.AreEqual(0, dep.Port, "Port");
            Assert.IsFalse(dep.Equals(null), "Equals(null)");
            Assert.IsTrue(dep.Equals(dep), "Equals(self)");
            Assert.AreEqual("InterNetwork/localhost:0", dep.ToString());
        }
コード例 #7
0
        public void Unspecified()
        {
            DnsEndPoint dep = new DnsEndPoint("localhost", 0, AddressFamily.Unspecified);

            Assert.AreEqual("localhost", dep.Host, "Host");
            Assert.AreEqual(AddressFamily.Unspecified, dep.AddressFamily, "AddressFamily");
            Assert.AreEqual("localhost", dep.Host, "Host");
            Assert.AreEqual(0, dep.Port, "Port");
            Assert.IsFalse(dep.Equals(null), "Equals(null)");
            Assert.IsTrue(dep.Equals(dep), "Equals(self)");
            Assert.AreEqual("Unspecified/localhost:0", dep.ToString());
        }
コード例 #8
0
        /// <summary>
        /// Creates a channel/client pair with the appropriate options and interceptors.
        /// </summary>
        /// <returns>A tuple of the channel and client</returns>
        private GrpcClient CreateClient(DnsEndPoint remoteEndpoint)
        {
            var channel = new Channel(remoteEndpoint.ToString(), ChannelCredentials.Insecure, new List <ChannelOption>
            {
                new ChannelOption(ChannelOptions.MaxSendMessageLength, GrpcConstants.DefaultMaxSendMessageLength),
                new ChannelOption(ChannelOptions.MaxReceiveMessageLength, GrpcConstants.DefaultMaxReceiveMessageLength)
            });

            var nodePubkey = AsyncHelper.RunSync(() => _accountService.GetPublicKeyAsync()).ToHex();

            var interceptedChannel = channel.Intercept(metadata =>
            {
                metadata.Add(GrpcConstants.PubkeyMetadataKey, nodePubkey);
                return(metadata);
            }).Intercept(new RetryInterceptor());

            var client = new PeerService.PeerServiceClient(interceptedChannel);

            return(new GrpcClient(channel, client));
        }
コード例 #9
0
        public void Constructor_StringInt()
        {
            Assert.Throws <ArgumentNullException> (delegate {
                new DnsEndPoint(null, 0);
            }, "ctor(null,0)");
            Assert.Throws <ArgumentException> (delegate {
                new DnsEndPoint(String.Empty, 0);
            }, "ctor(Empty,0)");
            Assert.Throws <ArgumentOutOfRangeException> (delegate {
                new DnsEndPoint("localhost", -1);
            }, "ctor(localhost,-1)");
            Assert.Throws <ArgumentOutOfRangeException> (delegate {
                new DnsEndPoint("localhost", (0xffff + 1));
            }, "ctor(localhost,(0xffff + 1))");

            DnsEndPoint dep = new DnsEndPoint("localhost", 65535);

            Assert.AreEqual(AddressFamily.Unspecified, dep.AddressFamily, "AddressFamily");
            Assert.AreEqual("localhost", dep.Host, "Host");
            Assert.AreEqual(65535, dep.Port, "Port");
            Assert.IsFalse(dep.Equals(null), "Equals(null)");
            Assert.IsTrue(dep.Equals(dep), "Equals(self)");
            Assert.AreEqual("Unspecified/localhost:65535", dep.ToString());
        }
コード例 #10
0
ファイル: TCPClient.cs プロジェクト: highras/fpnn-sdk-csharp
        //----------------[ Properties methods ]-----------------------//

        public string Endpoint()
        {
            return(dnsEndpoint.ToString());
        }
コード例 #11
0
 public Task <bool> SchedulePeerReconnection(DnsEndPoint endpoint)
 {
     return(Task.FromResult(_reconnectionService.SchedulePeerForReconnection(endpoint.ToString())));
 }