public ThriftServerDef( INiftyProcessor processor, TProtocolFactory protocolFactory, String name = null, String host = null, int serverPort = 8080, long maxFrameSize = DefaultMaxFrameSize, int queuedResponseLimit = 16, int maxConnections = int.MaxValue, IThriftFrameCodecFactory thriftFrameCodecFactory = null, TimeSpan?clientIdleTimeout = null, TimeSpan?taskTimeout = null, TimeSpan?queueTimeout = null, SslConfig sslConfig = null) : this((processor == null ? null : new DelegateNiftyProcessorFactory(t => processor)), protocolFactory, name, host, serverPort, maxFrameSize, queuedResponseLimit, maxConnections, thriftFrameCodecFactory, clientIdleTimeout, taskTimeout, queueTimeout, sslConfig) { }
public ThriftServer( INiftyProcessor processor, ThriftServerConfig serverConfig, SslConfig sslConfig = null, ILoggerFactory loggerFactory = null) : this(processor, serverConfig, DefaultFrameCodecFactories, DefaultProtocolFactories, sslConfig, loggerFactory) { }
public ThriftServer( INiftyProcessor processor, int port = 0, SslConfig sslConfig = null, ILoggerFactory loggerFactory = null) : this(processor, new ThriftServerConfig() { Port = Math.Max(0, port) }, DefaultFrameCodecFactories, DefaultProtocolFactories, sslConfig, loggerFactory) { }
public ThriftServer( INiftyProcessor processor, ThriftServerConfig serverConfig, IDictionary <String, IThriftFrameCodecFactory> availableFrameCodecFactories, IDictionary <String, TDuplexProtocolFactory> availableProtocolFactories, SslConfig sslConfig = null, ILoggerFactory loggerFactory = null ) { Guard.ArgumentNotNull(serverConfig, nameof(serverConfig)); Guard.ArgumentNotNull(availableFrameCodecFactories, nameof(availableFrameCodecFactories)); Guard.ArgumentNotNull(availableProtocolFactories, nameof(availableProtocolFactories)); Guard.ArgumentCondition(availableFrameCodecFactories.ContainsKey(serverConfig.TransportName), $"No available server transport named {serverConfig.TransportName}"); Guard.ArgumentCondition(availableProtocolFactories.ContainsKey(serverConfig.ProtocolName), $"No available server protocol named {serverConfig.ProtocolName}"); _eventLocked = new ManualResetEvent(true); _logger = loggerFactory?.CreateLogger <ThriftServer>() ?? (ILogger)NullLogger.Instance; ThriftServerDef def = new ThriftServerDef( new DelegateNiftyProcessorFactory(t => processor), availableProtocolFactories[serverConfig.ProtocolName], "thrift", serverConfig.BindingAddress, serverConfig.Port, serverConfig.MaxFrameSizeBytes, serverConfig.MaxQueuedResponsesPerConnection, serverConfig.ConnectionLimit ?? int.MaxValue, availableFrameCodecFactories[serverConfig.TransportName], serverConfig.IdleConnectionTimeout, serverConfig.TaskExpirationTimeout != TimeSpan.Zero ? serverConfig.TaskExpirationTimeout : (TimeSpan?)null, serverConfig.QueueTimeout != TimeSpan.Zero ? serverConfig.QueueTimeout : (TimeSpan?)null, sslConfig ); NettyServerConfig config = new NettyServerConfig(new HashedWheelTimer(), new MultithreadEventLoopGroup(serverConfig.AcceptorThreadCount), new MultithreadEventLoopGroup(serverConfig.WorkerThreadCount), serverConfig.IOThreadCount,//20170515陈慎远临时添加 null, loggerFactory); //NettyServerConfig config = new NettyServerConfig(timer:new HashedWheelTimer(), // bossGroup: new MultithreadEventLoopGroup(serverConfig.AcceptorThreadCount), // ioThreadCount:1); _transport = new NettyServerTransport(def, config); }
//** // * Create a {@link NiftyProcessorFactory} that delegates to a standard Thrift {@link TProcessorFactory} // * to construct an instance, then adapts each instance to a {@link NiftyProcessor} // */ // public static INiftyProcessorFactory factoryFromTProcessorFactory(TProcessorFactory standardThriftProcessorFactory) //{ // checkProcessMethodSignature(); // return new DelegateNiftyProcessorFactory(t=>processorFromTProcessor(sta) // return new NiftyProcessorFactory() // { // @Override // public NiftyProcessor getProcessor(TTransport transport) //{ // return processorFromTProcessor(standardThriftProcessorFactory.getProcessor // (transport)); //} // }; // } /** * Adapt a {@link NiftyProcessor} to a standard Thrift {@link TProcessor}. The {@link * com.facebook.nifty.core.NiftyRequestContext} will always be {@code null} */ public static TProcessor ProcessorToTProcessor(INiftyProcessor niftyProcessor) { return(new DelegateTProcessor((inProt, outProt) => { try { return niftyProcessor.ProcessAsync(inProt, outProt, null).GetAwaiter().GetResult(); } catch (TaskCanceledException cex) { throw new NiftyException("nifty processor 线程被取消。", cex); } catch (Exception ex) { throw new NiftyException("niftyProcessor 处理出错。", ex); } })); }