Esempio n. 1
0
        private object GetStub(ThriftyRequest request, ChannelKey key, INiftyClientChannel channel)
        {
            var method  = request.Method;
            var service = method.DeclaringType;
            var client  = _thriftClientManager.CreateClient(channel, service, $"{service.Name }{key}", _swiftyClientOptions.EventHandlers);

            request.Stub       = client;
            request.ChannelKey = key;
            return(client);
        }
Esempio n. 2
0
        private ThriftyResponse Execute(ThriftyRequest request, Ribbon.Server server, ClientSslConfig sslConfig)
        {
            var func = _methodCache.GetOrAdd(request.Method, CreateFunc);

            _logger.LogDebug(new EventId(0, "ThriftyClient"), $"use {server}");

            var discoveryEnabledServer = server as DiscoveryEnabledServer;
            var host    = discoveryEnabledServer == null ? server.Host : discoveryEnabledServer.InstanceInfo.IpAddr;
            var port    = discoveryEnabledServer?.Port ?? server.Port;
            var address = string.Compare("localhost", host, StringComparison.OrdinalIgnoreCase) == 0
                ? IPAddress.Loopback
                : IPAddress.Parse(host);

            var key = new ChannelKey(new IPEndPoint(address, port), sslConfig,
                                     request.ConnectTimeout, request.ReveiveTimeout, request.WriteTimeout, request.ReadTimeout);

            using (var channel = new PooledClientChannel(this._channelPools, key))
            {
                var proxy  = GetStub(request, key, channel);
                var result = func(proxy, request.Args);
                return(new ThriftyResponse(result, true));
            }
        }