//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; }
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); } }; }
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); } }; }