Пример #1
0
        //private readonly ISerializer _serializer;
        //private readonly IClientSender _sender;

        public ClientSender(ClientListener listener,
                            ILogger logger /*, ISerializer serializer*/)
        {
            _logger = logger;
            //this._serializer = serializer;
            _listener = listener;

            _listener.OnReceived += ListenerOnReceived;
        }
Пример #2
0
        private void InitHttp(IContainer container)
        {
            var factory = container.Resolve <ClientSenderFactory>();
            var logger  = container.Resolve <ILogger>();

            logger.Info($"[config]use http for transfer");

            factory.ClientSenderCreator += (global::Jimu.JimuAddress address, ref IClientSender client) =>
            {
                //if (client == null && address.GetType() == typeof(HttpAddress))
                if (client == null && address.Protocol == "Http")
                {
                    var listener = new ClientListener();
                    //var sender = new HttpClientSender(address, listener);
                    client = new global::Jimu.Client.HttpClientSender(listener, logger, address);
                }
            };
        }
Пример #3
0
        private void InitNetty(IContainer container)
        {
            var factory = container.Resolve <ClientSenderFactory>();

            var loggerFactory = container.Resolve <ILoggerFactory>();
            var logger        = loggerFactory.Create(this.GetType());
            var bootstrap     = new Bootstrap();

            logger.Info($"[config]use dotnetty for transfer");

            bootstrap
            .Group(new MultithreadEventLoopGroup())
            .Channel <TcpSocketChannel>()
            .Option(ChannelOption.TcpNodelay, true)
            .Handler(new ActionChannelInitializer <IChannel>(channel =>
            {
                var pipeline = channel.Pipeline;
                pipeline.AddLast(new LengthFieldPrepender(4));
                pipeline.AddLast(new LengthFieldBasedFrameDecoder(int.MaxValue, 0, 4, 0, 4));
                pipeline.AddLast(new ReadClientMessageChannelHandlerAdapter(logger));
                pipeline.AddLast(new ClientHandlerChannelHandlerAdapter(factory, logger));
            }));
            //AttributeKey<IClientSender> clientSenderKey = AttributeKey<IClientSender>.ValueOf(typeof(DefaultTransportClientFactory), nameof(IClientSender));
            AttributeKey <ClientListener> clientListenerKey = AttributeKey <ClientListener> .ValueOf(typeof(ClientSenderFactory), nameof(ClientListener));

            //AttributeKey<EndPoint> endPointKey = AttributeKey<EndPoint>.ValueOf(typeof(DefaultTransportClientFactory), nameof(EndPoint));
            AttributeKey <string> endPointKey = AttributeKey <string> .ValueOf(typeof(ClientSenderFactory), "addresscode");

            factory.ClientSenderCreator += (JimuAddress address, ref IClientSender client) =>
            {
                //if (client == null && address.GetType().IsAssignableFrom(typeof(DotNettyAddress)))
                if (client == null && address.Protocol == "Netty")
                {
                    var ep       = address.CreateEndPoint();
                    var channel  = bootstrap.ConnectAsync(ep).Result;
                    var listener = new ClientListener();
                    channel.GetAttribute(clientListenerKey).Set(listener);
                    //var sender = new DotNettyClientSender(channel, logger);
                    //channel.GetAttribute(clientSenderKey).Set(sender);
                    channel.GetAttribute(endPointKey).Set($"{address.Protocol}-{address.Code}");
                    client = new DotNettyClientSender(listener, logger, channel);
                }
            };
        }