public DotNettyClientFactory(IMessageCoderFactory coderFactory, IMicroExecutor executor = null) { _coderFactory = coderFactory; _microExecutor = executor; _logger = LogManager.Logger <DotNettyClientFactory>(); _bootstrap = GetBootstrap(); _bootstrap.Handler(new ActionChannelInitializer <ISocketChannel>(c => { var pipeline = c.Pipeline; pipeline.AddLast(new LengthFieldPrepender(4)); pipeline.AddLast(new LengthFieldBasedFrameDecoder(int.MaxValue, 0, 4, 0, 4)); pipeline.AddLast(new MicroMessageHandler(_coderFactory.GetDecoder())); pipeline.AddLast(new ClientHandler(channel => { var k = channel.GetAttribute(OrigEndPointKey).Get(); _logger.Debug($"删除客户端:{k}"); _clients.TryRemove(k, out _); }, async(context, msg) => { var listener = context.Channel.GetAttribute(ListenerKey).Get(); var sender = context.Channel.GetAttribute(SenderKey).Get(); await listener.OnReceived(sender, msg); })); })); }
public DotNettyMicroListener(IMessageCoderFactory coderFactory) { _logger = LogManager.Logger <DotNettyMicroListener>(); _coderFactory = coderFactory; }