Пример #1
0
 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)
 {
 }
Пример #2
0
 public ThriftServer(
     INiftyProcessor processor,
     ThriftServerConfig serverConfig,
     SslConfig sslConfig          = null,
     ILoggerFactory loggerFactory = null)
     : this(processor,
            serverConfig,
            DefaultFrameCodecFactories,
            DefaultProtocolFactories,
            sslConfig,
            loggerFactory)
 {
 }
Пример #3
0
 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)
 {
 }
Пример #4
0
        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);
        }
Пример #5
0
        //**
        // * 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);
                }
            }));
        }