Example #1
0
        static void Main(string[] args)
        {
            try
            {
                //MathServiceImpl handler = new MathServiceImpl();
                //MathService.Processor processor = new MathService.Processor(handler);
                //TServerTransport serverTransport = new TServerSocket(8088);
                //TServer server = new TSimpleServer(processor, serverTransport);
                //Console.WriteLine("Starting the server...");
                //server.Serve();

                TServerSocket serverTransport = new TServerSocket(8088);    // 设置服务端口为8088
                //Factory factory = new Factory();    // 设置协议工厂为 TBinaryProtocol
                TBinaryProtocol.Factory factory          = new TBinaryProtocol.Factory();
                TTransportFactory       transportFactory = new TTransportFactory();
                TProcessor processor = new MathService.Processor(new MathServiceImpl());
                TServer    server    = new TThreadPoolServer(processor, serverTransport, transportFactory, factory);
                Console.WriteLine($"Starting the server");
                server.Serve();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            Console.WriteLine("Done.");
        }
Example #2
0
        public void Start()
        {
            try
            {
                _currentSessions = new List<Session>();

                // Initialize and start server which accepts tracker connections
                var socketListener = new SocketListener(NetworkSettings.GetFromAppConfig());
                socketListener.ActiveChannels.CollectionChanged += ActiveSessions_CollectionChanged;

                // Initialize and start Node interface (used by other services to access devices realtime)
                // Processor
                var implementation = new NodeServiceImplementation(_currentSessions);
                var testProcessor = new NodeService.Processor(implementation);

                // Transport
                // todo: define port in AppConfig!
                var tServerSocket = new TServerSocket(4445, 0, true);

                // ThreadPool Server
                TServer serverEngine = new TThreadPoolServer(testProcessor, tServerSocket);

                // Run it
                serverEngine.Serve();

                Console.WriteLine("Server is running...press any key to exit...");

            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
Example #3
0
 static void Main()
 {
     var processor = new AccountService.Processor(new AccountServiceHandler());
     var transport = new TServerSocket(18801);
     var server = new TThreadPoolServer(processor, transport);
     server.Serve();
 }
 private void Dispose(bool disposing)
 {
     if (disposing && server != null)
     {
         server.Stop();
         server = null;
     }
 }
Example #5
0
        static void Main(string[] args)
        {
            TServerSocket serverTransport = new TServerSocket(7911);

             UserStorage.Processor processor = new UserStorage.Processor(new UserStorageImpl());
             // var protFactory = new TBinaryProtocol.Factory(true, true);
             var server = new TThreadPoolServer(processor, serverTransport);
             Console.WriteLine("Starting server on port 7911 ...");
             server.Serve();
        }
Example #6
0
 public EchoServer()
 {
     _server = new TThreadPoolServer(this,
         new TServerSocket(1337),
         new TFramedTransport.Factory(),
         new TFramedTransport.Factory(),
         new TBinaryProtocol.Factory(),
         new TBinaryProtocol.Factory(),
         16, 128,
         Log);
 }
Example #7
0
 public EchoServer()
 {
     _server = new TThreadPoolServer(this,
                                     new TServerSocket(1337),
                                     new TFramedTransport.Factory(),
                                     new TFramedTransport.Factory(),
                                     new TBinaryProtocol.Factory(),
                                     new TBinaryProtocol.Factory(),
                                     16, 128,
                                     Log);
 }
        public void Run()
        {
            try
            {
                var processor = new MessageService.Processor(receiver);
                var serverTransport = new TServerSocket(port);
                server = new TThreadPoolServer(processor, serverTransport, new TTransportFactory(), new TCompactProtocol.Factory());

                Task.Factory.StartNew(() => server.Serve());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
        public static bool Execute(string[] args)
        {
            try
            {
                bool useBufferedSockets = false, useFramed = false, useEncryption = false, compact = false, json = false;
                ServerType serverType = ServerType.TSimpleServer;
                ProcessorFactoryType processorFactoryType = ProcessorFactoryType.TSingletonProcessorFactory;
                int port = 9090;
                string pipe = null;
                for (int i = 0; i < args.Length; i++)
                {
                    if (args[i] == "-pipe")  // -pipe name
                    {
                        pipe = args[++i];
                    }
                    else if (args[i].Contains("--port="))
                    {
                        port = int.Parse(args[i].Substring(args[i].IndexOf("=") + 1));
                    }
                    else if (args[i] == "-b" || args[i] == "--buffered" || args[i] == "--transport=buffered")
                    {
                        useBufferedSockets = true;
                    }
                    else if (args[i] == "-f" || args[i] == "--framed" || args[i] == "--transport=framed")
                    {
                        useFramed = true;
                    }
                    else if (args[i] == "--compact" || args[i] == "--protocol=compact")
                    {
                        compact = true;
                    }
                    else if (args[i] == "--json" || args[i] == "--protocol=json")
                    {
                        json = true;
                    }
                    else if (args[i] == "--threaded" || args[i] == "--server-type=threaded")
                    {
                        serverType = ServerType.TThreadedServer;
                    }
                    else if (args[i] == "--threadpool" || args[i] == "--server-type=threadpool")
                    {
                        serverType = ServerType.TThreadPoolServer;
                    }
                    else if (args[i] == "--prototype" || args[i] == "--processor=prototype")
                    {
                        processorFactoryType = ProcessorFactoryType.TPrototypeProcessorFactory;
                    }
                    else if (args[i] == "--ssl")
                    {
                        useEncryption = true;
                    }
                }

                // Transport
                TServerTransport trans;
                if (pipe != null)
                {
                    trans = new TNamedPipeServerTransport(pipe);
                }
                else
                {
                    if (useEncryption)
                    {
                        string certPath = "../../../../test/keys/server.p12";
                        trans = new TTLSServerSocket(port, 0, useBufferedSockets, new X509Certificate2(certPath, "thrift"), null, null, SslProtocols.Tls);
                    }
                    else
                    {
                        trans = new TServerSocket(port, 0, useBufferedSockets);
                    }
                }

                TProtocolFactory proto;
                if (compact)
                    proto = new TCompactProtocol.Factory();
                else if (json)
                    proto = new TJSONProtocol.Factory();
                else
                    proto = new TBinaryProtocol.Factory();

                TProcessorFactory processorFactory;
                if (processorFactoryType == ProcessorFactoryType.TPrototypeProcessorFactory)
                {
                    processorFactory = new TPrototypeProcessorFactory<ThriftTest.Processor, TestHandler>();
                }
                else
                {
                    // Processor
                    TestHandler testHandler = new TestHandler();
                    ThriftTest.Processor testProcessor = new ThriftTest.Processor(testHandler);
                    processorFactory = new TSingletonProcessorFactory(testProcessor);
                }

                TTransportFactory transFactory;
                if (useFramed)
                    transFactory = new TFramedTransport.Factory();
                else
                    transFactory = new TTransportFactory();

                TServer serverEngine;
                switch (serverType)
                {
                    case ServerType.TThreadPoolServer:
                        serverEngine = new TThreadPoolServer(processorFactory, trans, transFactory, proto);
                        break;
                    case ServerType.TThreadedServer:
                        serverEngine = new TThreadedServer(processorFactory, trans, transFactory, proto);
                        break;
                    default:
                        serverEngine = new TSimpleServer(processorFactory, trans, transFactory, proto);
                        break;
                }

                //Server event handler
                TradeServerEventHandler serverEvents = new TradeServerEventHandler();
                serverEngine.setEventHandler(serverEvents);

                // Run it
                string where = (pipe != null ? "on pipe " + pipe : "on port " + port);
                Console.WriteLine("Starting the " + serverType.ToString() + " " + where +
                    (processorFactoryType == ProcessorFactoryType.TPrototypeProcessorFactory ? " with processor prototype factory " : "") +
                    (useBufferedSockets ? " with buffered socket" : "") +
                    (useFramed ? " with framed transport" : "") +
                    (useEncryption ? " with encryption" : "") +
                    (compact ? " with compact protocol" : "") +
                    (json ? " with json protocol" : "") +
                    "...");
                serverEngine.Serve();

            }
            catch (Exception x)
            {
                Console.Error.Write(x);
                return false;
            }
            Console.WriteLine("done.");
            return true;
        }
Example #10
0
        static void Main(string[] args)
        {
            DNHPacketHandler handler = new DNHPacketHandler();
            DNHService.Processor processor = new DNHService.Processor(handler);

            TServerTransport serverTransport = new TServerSocket(9090);
            TServer server = new TThreadPoolServer(processor, serverTransport);

            Console.WriteLine("Starting the server...");
            server.Serve();
        }
Example #11
0
        static void Main( string[] args )
        {
            try
            {
                AutoMapperConfiguration.Initialise();

                bool useBufferedSockets = false, useFramed = false;
                int port = 9090;
                if ( args.Length > 0 )
                {
                    port = int.Parse( args[0] );

                    if ( args.Length > 1 )
                    {
                        if ( args[1] == "raw" )
                        {
                            // as default
                        }
                        else if ( args[1] == "buffered" )
                        {
                            useBufferedSockets = true;
                        }
                        else if ( args[1] == "framed" )
                        {
                            useFramed = true;
                        }
                        else
                        {
                            // Fall back to the older boolean syntax
                            bool.TryParse( args[1], out useBufferedSockets );
                        }
                    }
                }

                // Processor
                DataProviderImpl testHandler = new DataProviderImpl();
                DataProvider.Processor testProcessor = new DataProvider.Processor( testHandler );

                // Transport
                TServerSocket tServerSocket = new TServerSocket( port, 0, useBufferedSockets );

                // Simple Server
                TServer serverEngine;
                //if ( useFramed )
                //    serverEngine = new TSimpleServer( testProcessor, tServerSocket, new TFramedTransport.Factory() );
                //else
            //	    serverEngine = new TSimpleServer( testProcessor, tServerSocket );

                // ThreadPool Server
                 serverEngine = new TThreadPoolServer(testProcessor, tServerSocket);

                // Threaded Server
                // serverEngine = new TThreadedServer(testProcessor, tServerSocket);

                //testHandler.server = serverEngine;

                // Run it
                Console.WriteLine( "Starting the server on port " + port +
                    ( useBufferedSockets ? " with buffered socket" : "" ) +
                    ( useFramed ? " with framed transport" : "" ) +
                    "..." );
                serverEngine.Serve();
            }
            catch ( Exception x )
            {
                Console.Error.Write( x );
            }
            Console.WriteLine( "done." );
        }
Example #12
0
        private const int _defaultDelayedTime = 20000; //默认延时关闭时间

        public static void Start()
        {
            var _configPath = ConfigurationManager.AppSettings["ThriftServerConfigPath"];

            Config.ThriftConfigSection config = null;
            if (string.IsNullOrEmpty(_configPath))
            {
                config = ConfigurationManager.GetSection("thriftServer") as Config.ThriftConfigSection;
            }
            else
            {
                config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap
                {
                    ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _configPath)
                }, ConfigurationUserLevel.None).GetSection("thriftServer") as Config.ThriftConfigSection;
            }

            if (config == null || config.Services == null)
            {
                throw new Exception("thrift服务配置不存在");
            }

            foreach (Service service in config.Services)
            {
                new System.Threading.Thread(() =>
                {
                    try
                    {
                        Assembly assembly = Assembly.LoadFrom(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, service.HandlerType.Split(',')[1]));
                        object objType    = assembly.CreateInstance(service.HandlerType.Split(',')[0], true);
                        if (objType == null)
                        {
                            throw new Exception(service.HandlerType + "为空");
                        }

                        var handle = TransparentProxy.Create(objType.GetType());

                        string assemblyName = service.SpaceName;
                        //if (!string.IsNullOrEmpty(service.AssemblyName))
                        //    assemblyName = service.AssemblyName;

                        var processor = (Thrift.TProcessor)Type.GetType($"{service.SpaceName}.{service.ClassName}+Processor,{assemblyName}", true)
                                        .GetConstructor(new Type[] { Type.GetType($"{service.SpaceName}.{service.ClassName}+Iface,{assemblyName}", true) })
                                        .Invoke(new object[] { handle });

                        TServerTransport serverTransport = new TServerSocket(service.Port, service.ClientTimeout);

                        TServer server = new TThreadPoolServer(new BaseProcessor(processor, service), serverTransport,
                                                               new TTransportFactory(),
                                                               new TTransportFactory(),
                                                               new TBinaryProtocol.Factory(),
                                                               new TBinaryProtocol.Factory(), service.MinThreadPoolThreads, service.MaxThreadPoolThreads, (x) =>
                        {
                            ThriftLog.Info("log:" + x);
                        });

                        RegeditConfig regiditConfig = null;
                        if (service.ZookeeperConfig != null && service.ZookeeperConfig.Host != "")
                        {
                            regiditConfig = ConfigCenter.RegeditServer(service); //zookeeper 注册服务
                        }
                        ThriftLog.Info($"{service.Name} {service.Port} Starting the TThreadPoolServer...");
                        _services.Add(server, regiditConfig);
                        server.Serve();
                    }
                    catch (Exception ex)
                    {
                        ThriftLog.Error(ex.Message + ex.StackTrace);
                    }
                }).Start();
            }
        }
Example #13
0
        public static void StartMult()
        {
            var _configPath = ConfigurationManager.AppSettings["ThriftServerConfigPath"];

            Config.ThriftConfigSection config = null;
            if (string.IsNullOrEmpty(_configPath))
            {
                config = ConfigurationManager.GetSection("thriftServer") as Config.ThriftConfigSection;
            }
            else
            {
                config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap
                {
                    ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _configPath)
                }, ConfigurationUserLevel.None).GetSection("thriftServer") as Config.ThriftConfigSection;
            }

            if (config == null || config.Services == null)
            {
                throw new Exception("thrift服务配置不存在");
            }

            foreach (Service service in config.Services)
            {
                new System.Threading.Thread(() =>
                {
                    try
                    {
                        TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor();

                        Type[] thriftTypes     = Assembly.LoadFrom(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, service.ThriftAssembly)).GetTypes();
                        Type[] thriftImplTypes = Assembly.LoadFrom(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, service.ThriftImplAssembly)).GetTypes();
                        foreach (var t in thriftTypes)
                        {
                            if (!t.Name.Equals("Iface"))
                            {
                                continue;
                            }
                            string processorFullName = t.FullName.Replace("+Iface", "+Processor");
                            Type processorType       = thriftTypes.FirstOrDefault(c => c.FullName.Equals(processorFullName));
                            object handle            = null;
                            foreach (Type t2 in thriftImplTypes)
                            {
                                if (t2.GetInterfaces().Contains(t))
                                {
                                    handle = TransparentProxy.Create(t2);
                                    break;
                                }
                            }
                            var processor = (Thrift.TProcessor)processorType.GetConstructor(new Type[] { t }).Invoke(new object[] { handle });
                            multiplexedProcessor.RegisterProcessor(t.ReflectedType.Name, processor);
                        }

                        if (service.Port > 0)
                        {
                            if (!PortHelper.PortIsAvailable(service.Port))
                            {
                                throw new Exception("端口冲突");
                            }
                        }
                        else
                        {
                            service.Port = PortHelper.GetFirstAvailablePort();
                            if (service.Port <= 0)
                            {
                                throw new Exception("无端口可用");
                            }
                        }

                        TServerTransport serverTransport = new TServerSocket(service.Port, service.ClientTimeout);

                        TServer server = new TThreadPoolServer(new BaseProcessor(multiplexedProcessor, service), serverTransport,
                                                               new TTransportFactory(),
                                                               new TTransportFactory(),
                                                               new TBinaryProtocol.Factory(),
                                                               new TBinaryProtocol.Factory(), service.MinThreadPoolThreads, service.MaxThreadPoolThreads, (x) =>
                        {
                            ThriftLog.Info("log:" + x);
                        });

                        RegeditConfig regiditConfig = null;
                        if (service.ZookeeperConfig != null && service.ZookeeperConfig.Host != "")
                        {
                            regiditConfig = ConfigCenter.RegeditServer(service); //zookeeper 注册服务
                        }
                        ThriftLog.Info($"{service.Name} {service.Port} Starting the TThreadPoolServer...");
                        _services.Add(server, regiditConfig);
                        server.Serve();
                    }
                    catch (Exception ex)
                    {
                        ThriftLog.Error(ex.Message + ex.StackTrace);
                    }
                }).Start();
            }
        }