public DotNettyTransportClientFactory(ITransportMessageCodecFactory codecFactory,
                                              IHealthCheckService healthCheckService, ILogger <DotNettyTransportClientFactory> logger,
                                              IServiceExecutor serviceExecutor)
        {
            _transportMessageEncoder = codecFactory.GetEncoder();
            _transportMessageDecoder = codecFactory.GetDecoder();
            _logger             = logger;
            _healthCheckService = healthCheckService;
            _serviceExecutor    = serviceExecutor;
            _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));
                if (AppConfig.ServerOptions.EnableHealthCheck)
                {
                    pipeline.AddLast(new IdleStateHandler(0, AppConfig.ServerOptions.HealthCheckWatchIntervalInSeconds, 0));
                    pipeline.AddLast(DotNettyConstants.HeartBeatName, new HeartBeatHandler(_healthCheckService, this));
                }

                pipeline.AddLast(DotNettyConstants.TransportMessageAdapterName,
                                 new TransportMessageChannelHandlerAdapter(_transportMessageDecoder));
                pipeline.AddLast(DotNettyConstants.ClientChannelHandler,
                                 new DefaultChannelHandler(this, healthCheckService));
            }));
        }
示例#2
0
        /// <summary>
        /// 创建客户端。
        /// </summary>
        /// <param name="endPoint">终结点。</param>
        /// <returns>传输客户端实例。</returns>
        public ITransportClient CreateClient(EndPoint endPoint)
        {
            var key = endPoint.ToString();

            return(_clients.GetOrAdd(key, k => new Lazy <ITransportClient>(() =>
            {
                var messageListener = new MessageListener();
                Func <TcpSocketSaeaClient> clientFactory = () =>
                {
                    var client = new TcpSocketSaeaClient((IPEndPoint)endPoint, async(c, data, offset, count) =>
                    {
                        if (_logger.IsEnabled(LogLevel.Information))
                        {
                            _logger.LogInformation("接收到数据包。");
                        }

                        var transportMessageDecoder = _transportMessageCodecFactory.GetDecoder();
                        var transportMessageEncoder = _transportMessageCodecFactory.GetEncoder();
                        var message = transportMessageDecoder.Decode(data.Skip(offset).Take(count).ToArray());

                        if (_logger.IsEnabled(LogLevel.Information))
                        {
                            _logger.LogInformation("接收到消息:" + message.Id);
                        }

                        await messageListener.OnReceived(new SimpleClientMessageSender(transportMessageEncoder, c), message);
                    });
                    client.Connect().Wait();
                    return client;
                };
                return new TransportClient(new SimpleClientMessageSender(_transportMessageCodecFactory.GetEncoder(), clientFactory), messageListener, _logger, _serviceExecutor);
            })).Value);
        }
 public DotNettyHttpServerMessageListener(ILogger <DotNettyHttpServerMessageListener> logger, ITransportMessageCodecFactory codecFactory, ISerializer <string> serializer)
 {
     _logger = logger;
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _serializer = serializer;
 }
 public DefaultDotNettyServerMessageListener(ITransportMessageCodecFactory codecFactory,
                                             ILogger <DefaultDotNettyServerMessageListener> logger)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger = logger;
 }
 public ThriftTransportClientFactory(ITransportMessageCodecFactory codecFactory, CommandLineApplication app, IConsole console)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _app     = app;
     _console = console;
 }
示例#6
0
 public SimpleMessageDispatcher(IMessageListener messageListener, ITransportMessageCodecFactory transportMessageCodecFactory, ILogger logger)
 {
     _messageListener         = messageListener;
     _logger                  = logger;
     _transportMessageEncoder = transportMessageCodecFactory.GetEncoder();
     _transportMessageDecoder = transportMessageCodecFactory.GetDecoder();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DotNettyUdpServerMessageListener" /> class.
 /// </summary>
 /// <param name="logger">The logger.</param>
 /// <param name="codecFactory">The codec factory.</param>
 public DotNettyUdpServerMessageListener(ILogger <DotNettyUdpServerMessageListener> logger
                                         , ITransportMessageCodecFactory codecFactory)
 {
     _logger = logger;
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
 }
 public SimpleMessageDispatcher(IMessageListener messageListener, ITransportMessageCodecFactory transportMessageCodecFactory, ILogger logger)
 {
     _messageListener = messageListener;
     _logger = logger;
     _transportMessageEncoder = transportMessageCodecFactory.GetEncoder();
     _transportMessageDecoder = transportMessageCodecFactory.GetDecoder();
 }
示例#9
0
 public ThriftServerMessageListener(ILogger <ThriftServerMessageListener> logger, IThriftServiceEntryProvider thriftServiceEntryProvider, ITransportMessageCodecFactory codecFactory)
 {
     _logger = logger;
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _entries = thriftServiceEntryProvider.GetEntries().ToList();
 }
 public DefaultDotNettyServerMessageListener(ITransportMessageCodecFactory codecFactory,
                                             ILogger <DefaultDotNettyServerMessageListener> logger)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger = logger;
     Console.Write("create transport message for encoder and decoder.");
 }
 public ThriftTransportClientFactory(ITransportMessageCodecFactory codecFactory, IHealthCheckService healthCheckService, ILogger <ThriftTransportClientFactory> logger, IServiceExecutor serviceExecutor)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger             = logger;
     _healthCheckService = healthCheckService;
     _serviceExecutor    = serviceExecutor;
 }
 public DotNettyTransportClientFactory(ITransportMessageCodecFactory codecFactory, ILogger <DotNettyTransportClientFactory> logger, IServiceExecutor serviceExecutor)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger          = logger;
     _serviceExecutor = serviceExecutor;
     _bootstrap       = GetBootstrap();
 }
示例#13
0
 public DotNettyTransportClientFactory(ITransportMessageCodecFactory codecFactory, ILogger <DotNettyTransportClientFactory> logger, IServiceExecutor serviceExecutor)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger          = logger;
     _serviceExecutor = serviceExecutor;
     _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 TransportMessageChannelHandlerAdapter(_transportMessageDecoder));
         pipeline.AddLast(new DefaultChannelHandler(this));
     }));
 }
示例#14
0
 public NettyTransportClientFactory(ITransportMessageCodecFactory codecFactory, CommandLineApplication app, IConsole console)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _app       = app;
     _console   = console;
     _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 TransportMessageChannelHandlerAdapter(_transportMessageDecoder));
         pipeline.AddLast(new DefaultChannelHandler(this));
     }));
 }
 public DotNettyTransportClientFactory(ITransportMessageCodecFactory codecFactory, ILogger <DotNettyTransportClientFactory> logger, IServiceExecutor serviceExecutor)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger          = logger;
     _serviceExecutor = serviceExecutor;
     //_bootstrap = GetBootstrap();
     //_bootstrap.Handler(new ActionChannelInitializer<ISocketChannel>(c =>
     //{
     //    var pipeline = c.Pipeline;
     //    pipeline.AddLast(
     //        new IdleStateHandler(0, 4, 0),
     //        this.idleStateTrigger,
     //        new ProtocolDecoder(),
     //        encoder,
     //        new TransportMessageChannelHandlerAdapter(_transportMessageDecoder),
     //        new DefaultChannelHandler(this));
     //}));
 }
 public SimpleServerMessageListener(ITransportMessageCodecFactory codecFactory, ILogger<SimpleServerMessageListener> logger)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger = logger;
 }
示例#17
0
 public SimpleServerMessageListener(ITransportMessageCodecFactory codecFactory, ILogger <SimpleServerMessageListener> logger)
 {
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
     _logger = logger;
 }
示例#18
0
 public DotNettyServerMessageListener(ILogger<DotNettyServerMessageListener> logger, ITransportMessageCodecFactory codecFactory)
 {
     _logger = logger;
     _transportMessageEncoder = codecFactory.GetEncoder();
     _transportMessageDecoder = codecFactory.GetDecoder();
 }