public TZmqServer (TProcessor processor, Context ctx, String endpoint, SocketType sockType)
		{
			new TSimpleServer (processor,null);
			_socket = ctx.Socket (sockType);
			_socket.Bind (endpoint);
			_processor = processor;
		}
 public TThreadedServer(TProcessor processor, TServerTransport serverTransport)
     : this(new TSingletonProcessorFactory(processor), serverTransport,
      new TTransportFactory(), new TTransportFactory(),
      new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(),
      DEFAULT_MAX_THREADS, DefaultLogDelegate)
 {
 }
Example #3
0
		public TThreadPoolServer(TProcessor processor, TServerTransport serverTransport)
			:this(processor, serverTransport,
				 new TTransportFactory(), new TTransportFactory(),
				 new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(),
				 DEFAULT_MIN_THREADS, DEFAULT_MAX_THREADS, DefaultLogDelegate)
		{
		}
Example #4
0
        public TThreadedServer(TProcessor processor, TServerTransport serverTransport, LogDelegate logDelegate)
            : this(processor, serverTransport,
				 new TTransportFactory(), new TTransportFactory(),
				 new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(),
				 DEFAULT_MAX_THREADS, logDelegate)
        {
        }
Example #5
0
		/**
		 * Default constructors.
		 */

		public TServer(TProcessor processor,
		               TServerTransport serverTransport)
			: this(
				processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(),
				new TBinaryProtocol.Factory(), DefaultLogDelegate)
		{
		}
		public TSimpleServer(TProcessor processor,
		                     TServerTransport serverTransport,
		                     LogDelegate logDel)
			: base(
				processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(),
				new TBinaryProtocol.Factory(), logDel)
		{
		}
    public TProcessorSingletonFactory(TProcessor processor)
    {
      if (processor == null)
      {
          throw new ArgumentNullException("processor");
      }

      _processor = processor;
    }
Example #8
0
        public TThreadPoolServer(TProcessor processor,
								 TServerTransport serverTransport,
								 TTransportFactory transportFactory,
								 TProtocolFactory protocolFactory)
            : this(processor, serverTransport,
				 transportFactory, transportFactory,
				 protocolFactory, protocolFactory,
				 DEFAULT_MIN_THREADS, DEFAULT_MAX_THREADS)
        {
        }
 public TThreadPoolServer(TProcessor processor,
  TServerTransport serverTransport,
  TTransportFactory transportFactory,
  TProtocolFactory protocolFactory)
     : this(new TSingletonProcessorFactory(processor), serverTransport,
        transportFactory, transportFactory,
        protocolFactory, protocolFactory,
        DEFAULT_MIN_THREADS, DEFAULT_MAX_THREADS, DefaultLogDelegate)
 {
 }
Example #10
0
        public TThreadedServer(TProcessor processor,
								 TServerTransport serverTransport,
								 TTransportFactory transportFactory,
								 TProtocolFactory protocolFactory)
            : this(processor, serverTransport,
				 transportFactory, transportFactory,
				 protocolFactory, protocolFactory,
				 DEFAULT_MAX_THREADS, DefaultLogDelegate)
        {
        }
Example #11
0
        public TServer(TProcessor processor,
						  TServerTransport serverTransport,
						  TTransportFactory transportFactory)
            : this(processor,
				 serverTransport,
				 transportFactory,
				 transportFactory,
				 new TBinaryProtocol.Factory(),
				 new TBinaryProtocol.Factory())
        {
        }
		public TSimpleServer(TProcessor processor,
						  TServerTransport serverTransport,
						  TTransportFactory transportFactory)
			:base(processor,
				 serverTransport,
				 transportFactory,
				 transportFactory,
				 new TBinaryProtocol.Factory(),
				 new TBinaryProtocol.Factory(),
			     DefaultLogDelegate)
		{
		}
Example #13
0
        public TServer(TProcessor processor,
						  TServerTransport serverTransport,
						  TTransportFactory transportFactory,
						  TProtocolFactory protocolFactory)
            : this(processor,
				 serverTransport,
				 transportFactory,
				 transportFactory,
				 protocolFactory,
				 protocolFactory)
        {
        }
Example #14
0
 public TServer(TProcessor processor,
                TServerTransport serverTransport,
                TTransportFactory transportFactory,
                TProtocolFactory protocolFactory)
     : this(processor,
            serverTransport,
            transportFactory,
            transportFactory,
            protocolFactory,
            protocolFactory,
            DefaultLogDelegate)
 {
 }
		public TSimpleServer(TProcessor processor,
						  TServerTransport serverTransport,
						  TTransportFactory transportFactory,
						  TProtocolFactory protocolFactory)
			:base(processor,
				 serverTransport,
				 transportFactory,
				 transportFactory,
				 protocolFactory,
				 protocolFactory,
				 DefaultLogDelegate)
		{
		}
Example #16
0
 public TThreadPoolServer(TProcessor processor, TServerTransport serverTransport, TTransportFactory inputTransportFactory, TTransportFactory outputTransportFactory, TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory, int minThreadPoolThreads, int maxThreadPoolThreads, TServer.LogDelegate logDel) : base(processor, serverTransport, inputTransportFactory, outputTransportFactory, inputProtocolFactory, outputProtocolFactory, logDel)
 {
     //lock (typeof(TThreadPoolServer))
     //{
     //	if (!ThreadPool.SetMinThreads(minThreadPoolThreads, minThreadPoolThreads))
     //	{
     //		throw new Exception("Error: could not SetMinThreads in ThreadPool");
     //	}
     //	if (!ThreadPool.SetMaxThreads(maxThreadPoolThreads, maxThreadPoolThreads))
     //	{
     //		throw new Exception("Error: could not SetMaxThreads in ThreadPool");
     //	}
     //}
 }
Example #17
0
 public TServer(TProcessor processor,
                TServerTransport serverTransport,
                TTransportFactory inputTransportFactory,
                TTransportFactory outputTransportFactory,
                TProtocolFactory inputProtocolFactory,
                TProtocolFactory outputProtocolFactory)
 {
     this.processor              = processor;
     this.serverTransport        = serverTransport;
     this.inputTransportFactory  = inputTransportFactory;
     this.outputTransportFactory = outputTransportFactory;
     this.inputProtocolFactory   = inputProtocolFactory;
     this.outputProtocolFactory  = outputProtocolFactory;
 }
Example #18
0
 public TThreadPoolServer(TProcessor processor,
                          TServerTransport serverTransport,
                          TTransportFactory inputTransportFactory,
                          TTransportFactory outputTransportFactory,
                          TProtocolFactory inputProtocolFactory,
                          TProtocolFactory outputProtocolFactory,
                          int minThreadPoolThreads, int maxThreadPoolThreads, LogDelegate logDel)
     : base(processor, serverTransport, inputTransportFactory, outputTransportFactory,
            inputProtocolFactory, outputProtocolFactory, logDel)
 {
     if (!ThreadPool.SetMaxThreads(maxThreadPoolThreads, maxThreadPoolThreads))
     {
         throw new Exception("Error: could not SetMaxThreads in ThreadPool");
     }
 }
Example #19
0
        public TThreadPoolServer(TProcessor processor,
								 TServerTransport serverTransport,
								 TTransportFactory inputTransportFactory,
								 TTransportFactory outputTransportFactory,
								 TProtocolFactory inputProtocolFactory,
								 TProtocolFactory outputProtocolFactory,
								 int minThreadPoolThreads, int maxThreadPoolThreads, LogDelegate logDel)
            : base(processor, serverTransport, inputTransportFactory, outputTransportFactory,
				  inputProtocolFactory, outputProtocolFactory, logDel)
        {
            if (!ThreadPool.SetMaxThreads(maxThreadPoolThreads, maxThreadPoolThreads))
            {
                throw new Exception("Error: could not SetMaxThreads in ThreadPool");
            }
        }
Example #20
0
 public TThreadedServer(TProcessor processor,
                        TServerTransport serverTransport,
                        TTransportFactory inputTransportFactory,
                        TTransportFactory outputTransportFactory,
                        TProtocolFactory inputProtocolFactory,
                        TProtocolFactory outputProtocolFactory,
                        int maxThreads, LogDelegate logDel)
     : base(processor, serverTransport, inputTransportFactory, outputTransportFactory,
            inputProtocolFactory, outputProtocolFactory, logDel)
 {
     this.maxThreads = maxThreads;
     clientQueue     = new Queue <TTransport>();
     clientLock      = new object();
     clientThreads   = new THashSet <Thread>();
 }
Example #21
0
        public TThreadedServer(TProcessor processor,
								 TServerTransport serverTransport,
								 TTransportFactory inputTransportFactory,
								 TTransportFactory outputTransportFactory,
								 TProtocolFactory inputProtocolFactory,
								 TProtocolFactory outputProtocolFactory,
								 int maxThreads, LogDelegate logDel)
            : base(processor, serverTransport, inputTransportFactory, outputTransportFactory,
				  inputProtocolFactory, outputProtocolFactory, logDel)
        {
            this.maxThreads = maxThreads;
            clientQueue = new Queue<TTransport>();
            clientLock = new object();
            clientThreads = new THashSet<Thread>();
        }
Example #22
0
 public TServer(TProcessor processor,
                TServerTransport serverTransport,
                TTransportFactory inputTransportFactory,
                TTransportFactory outputTransportFactory,
                TProtocolFactory inputProtocolFactory,
                TProtocolFactory outputProtocolFactory,
                LogDelegate logDelegate)
 {
     this.processor              = processor;
     this.serverTransport        = serverTransport;
     this.inputTransportFactory  = inputTransportFactory;
     this.outputTransportFactory = outputTransportFactory;
     this.inputProtocolFactory   = inputProtocolFactory;
     this.outputProtocolFactory  = outputProtocolFactory;
     this.logDelegate            = (logDelegate != null) ? logDelegate : DefaultLogDelegate;
 }
Example #23
0
        /// <summary>
        /// Renders the command stream with a new command processor
        /// </summary>
        internal List <CommandOutput> RenderWith <TProcessor>()
            where TProcessor : class, ICommandProcessor, new()
        {
            var commandProcessor = new TProcessor();

            if (!commandProcessor.Open())
            {
                throw new FFmpegRenderingException(commandProcessor.Error);
            }

            var returnType = RenderWith(commandProcessor);

            if (!commandProcessor.Close())
            {
                throw new FFmpegRenderingException(commandProcessor.Error);
            }

            return(returnType);
        }
Example #24
0
        public ICommandProcessor ExecuteWith <TProcessor>()
            where TProcessor : class, ICommandProcessor, new()
        {
            var commandProcessor = new TProcessor();

            if (!commandProcessor.Open())
            {
                throw new FFmpegRenderingException(commandProcessor.Error);
            }

            var returnType = ExecuteWith(commandProcessor);

            if (!commandProcessor.Close())
            {
                throw new FFmpegRenderingException(commandProcessor.Error);
            }

            return(returnType);
        }
Example #25
0
        public static Texture2D Process(Texture tex, TProcessor func)
        {
            if (tex == null)
            {
                throw new ArgumentNullException("tex is null");
            }
            if (func == null)
            {
                throw new ArgumentNullException("func is null");
            }

            Texture2D newTexture = tex.TryMakeReadable();

            newTexture            = func(newTexture);
            newTexture.anisoLevel = tex.anisoLevel;
            //newTexture.Compress(true);
            newTexture.name = tex.name + "-" + Extensions.GetPrettyFunctionName(func.Method);
            return(newTexture);
        }
Example #26
0
        static void Main(string[] args)
        {
            try
            {
                var section = ConfigurationManager.GetSection("thrift.hosts") as HostSetion;
                foreach (var host in section.Hosts)
                {
                    Console.WriteLine("{0} {1} {2} {3} {4}", host.Name, host.Port, host.MinThreadPoolSize, host.MaxThreadPoolSize, host.Services.Count);
                    foreach (var service in host.Services)
                    {
                        Console.WriteLine("{0} {1}", service.Contract, service.Handler);
                    }
                }

                ThriftServer serverHost = new ThriftServer();
                serverHost.Start();


                TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor();
                multiplexedProcessor.RegisterProcessor(typeof(AddressRpc).FullName, new AddressRpc.Processor(new AddressRpcImpl()));
                multiplexedProcessor.RegisterProcessor(typeof(SmsSendShortMessageRpc).FullName, new SmsSendShortMessageRpc.Processor(new SmsSendShortMessageRpcImpl()));

                TServerTransport transport = new TServerSocket(6011);
                TPrototypeProcessorFactory <AddressRpc.Processor, AddressRpcImpl> factory = new TPrototypeProcessorFactory <AddressRpc.Processor, AddressRpcImpl>();
                TProcessor processor = factory.GetProcessor(null);

                TSimpleServer server = new TSimpleServer(multiplexedProcessor, transport, info =>
                {
                    Console.WriteLine(info);
                });

                Console.WriteLine("Begin service...");

                server.Serve();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            Console.ReadLine();
        }
        protected virtual void StartService(IGrouping <int, ThriftService> group)
        {
            TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor();
            IServiceActivator     serviceActivator     = GlobalSetting.Container.GetService <IServiceActivator>();

            if (serviceActivator == null)
            {
                throw new NullReferenceException("未设置IServiceActivator接口");
            }
            foreach (ThriftService service in group)
            {
                object instance = serviceActivator.Create(service.ServiceType);
                if (instance == null)
                {
                    throw new NullReferenceException($"无法创建服务{service.ServiceType.FullName}");
                }
                Type processorType = ThriftServiceHelper.GetProcessorType(service.ServiceType);
                if (processorType == null)
                {
                    throw new NullReferenceException($"无法找到服务{service.ServiceType.FullName}对应的Processor类");
                }
                TProcessor processor = ThriftServiceHelper.CreateProcessor(processorType, instance);
                if (processor == null)
                {
                    throw new NullReferenceException($"无法创建Processor{processorType.FullName}");
                }
                multiplexedProcessor.RegisterProcessor(service.Name, processor);
            }
            TServerTransport serverTransport = new TServerSocket(group.Key);

            serverTransport.Listen();
            TServer server = new TThreadPoolServer(multiplexedProcessor, serverTransport);

            _servers.Add(server);
            Task.Run(() => server.Serve());
        }
Example #28
0
 public TServer(TProcessor processor,
     TServerTransport serverTransport,
     TTransportFactory inputTransportFactory,
     TTransportFactory outputTransportFactory,
     TProtocolFactory inputProtocolFactory,
     TProtocolFactory outputProtocolFactory,
     LogDelegate logDelegate)
 {
     this.processorFactory = new TSingletonProcessorFactory(processor);
     this.serverTransport = serverTransport;
     this.inputTransportFactory = inputTransportFactory;
     this.outputTransportFactory = outputTransportFactory;
     this.inputProtocolFactory = inputProtocolFactory;
     this.outputProtocolFactory = outputProtocolFactory;
     this.logDelegate = (logDelegate != null) ? logDelegate : DefaultLogDelegate;
 }
Example #29
0
 public TThreadPoolServer(TProcessor processor, TServerTransport serverTransport, TServer.LogDelegate logDelegate) : this(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), 10, 100, logDelegate)
 {
 }
Example #30
0
        /**
         * Create a {@link NiftyProcessorFactory} that always returns the same {@link NiftyProcessor}
         * adapted from the given standard Thrift {@link TProcessor}
         */
        public static INiftyProcessorFactory FactoryFromTProcessor(TProcessor standardThriftProcessor)
        {
            CheckProcessMethodSignature();

            return(new DelegateNiftyProcessorFactory(transport => ProcessorFromTProcessor(standardThriftProcessor)));
        }
Example #31
0
 public THttpHandler(TProcessor processor, TProtocolFactory protocolFactory)
     : this(processor, protocolFactory, protocolFactory)
 {
 }
Example #32
0
 /// <summary>
 /// Basic constructor
 /// </summary>
 /// <param name="description">The service description</param>
 /// <param name="mmiRegisterAddress">The address of the mmi register</param>
 /// <param name="processor">The assigned processor of the service controller</param>
 public ServiceController(MServiceDescription description, MIPAddress mmiRegisterAddress, TProcessor processor)
 {
     //Assign the adapter description
     this.serviceDescription = description;
     //Assign the addresses
     this.address            = description.Addresses[0];
     this.mmiRegisterAddress = mmiRegisterAddress;
     //Assign the processor
     this.processor = processor;
 }
Example #33
0
 public THttpHandler(TProcessor processor)
     : this(processor, new TBinaryProtocol.Factory())
 {
 }
 /**
  * 'Register' a service with this TMultiplexedProcessor. This allows us to broker
  * requests to individual services by using the service name to select them at request time.
  *
  * Args:
  * - serviceName    Name of a service, has to be identical to the name
  *                  declared in the Thrift IDL, e.g. "WeatherReport".
  * - processor      Implementation of a service, usually referred to as "handlers",
  *                  e.g. WeatherReportHandler implementing WeatherReport.Iface.
  */
 public void RegisterProcessor(String serviceName, TProcessor processor)
 {
     ServiceProcessorMap.Add(serviceName, processor);
 }
Example #35
0
        public THttpHandler(TProcessor processor, TProtocolFactory protocolFactory)
            : this(processor, protocolFactory, protocolFactory)
        {

        }
 public void Release(TProcessor processor)
 {
 }
Example #37
0
 public TThreadPoolServer(TProcessor processor, TServerTransport serverTransport, TTransportFactory transportFactory, TProtocolFactory protocolFactory) : this(processor, serverTransport, transportFactory, transportFactory, protocolFactory, protocolFactory, 10, 100, new TServer.LogDelegate(TServer.DefaultLogDelegate))
 {
 }
Example #38
0
		public TServer(TProcessor processor,
						  TServerTransport serverTransport,
						  TTransportFactory inputTransportFactory,
						  TTransportFactory outputTransportFactory,
						  TProtocolFactory inputProtocolFactory,
						  TProtocolFactory outputProtocolFactory,
						  LogDelegate logDelegate)
		{
			this.processor = processor;
			this.serverTransport = serverTransport;
			this.inputTransportFactory = inputTransportFactory;
			this.outputTransportFactory = outputTransportFactory;
			this.inputProtocolFactory = inputProtocolFactory;
			this.outputProtocolFactory = outputProtocolFactory;
			this.logDelegate = logDelegate;
		}
Example #39
0
 public THttpHandler(TProcessor processor)
     : this(processor, new TCompactProtocol.Factory())
 {
 }
Example #40
0
 public TSimpleServer(TProcessor processor,
                      TServerTransport serverTransport)
     : base(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TCompactProtocol.Factory(), new TCompactProtocol.Factory(), DefaultLogDelegate)
 {
 }
Example #41
0
 public THttpHandler(TProcessor processor, TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory)
 {
     this.processor             = processor;
     this.inputProtocolFactory  = inputProtocolFactory;
     this.outputProtocolFactory = outputProtocolFactory;
 }
Example #42
0
 /// <summary>
 /// Constructor to create a new server
 /// </summary>
 /// <param name="address"></param>
 /// <param name="port"></param>
 /// <param name="implementation"></param>
 public ThriftServerBase(string address, int port, TProcessor processor) : this(port, processor)
 {
     this.address = address;
 }
Example #43
0
 public TSimpleServer(TProcessor processor,
                      TServerTransport serverTransport,
                      LogDelegate logDel)
     : base(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), logDel)
 {
 }
 public TSingletonProcessorFactory(TProcessor processor)
 {
     processor_ = processor;
 }
 public WordbookHandler()
 {
     this.processor = new WordbookThriftService.Processor(WordbookService);
     this.inputProtocolFactory = this.outputProtocolFactory = new TJSONProtocol.Factory();
     //this.inputProtocolFactory = this.outputProtocolFactory = new TBinaryProtocol.Factory();
 }
Example #46
0
 /**
  * Adapt a {@link TProcessor} to a standard Thrift {@link NiftyProcessor}. Nifty uses this
  * internally to adapt the processors generated by the standard Thrift code generator into
  * instances of {@link NiftyProcessor} usable by {@link com.facebook.nifty.core.NiftyDispatcher}
  */
 public static INiftyProcessor ProcessorFromTProcessor(TProcessor standardThriftProcessor)
 {
     CheckProcessMethodSignature();
     return(new DelegateNiftyProcessor((pIn, pOut, rContext) => standardThriftProcessor.Process(pIn, pOut)));
 }
Example #47
0
 /// <summary>
 /// Basic constructor
 /// </summary>
 /// <param name="port"></param>
 /// <param name="processor"></param>
 public ThriftServerBase(int port, TProcessor processor)
 {
     this.port      = port;
     this.processor = processor;
 }
Example #48
0
 public TServer(TProcessor processor,
                TServerTransport serverTransport,
                LogDelegate logDelegate)
     : this(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), DefaultLogDelegate)
 {
 }
Example #49
0
        /// <summary>
        /// Loops on processing a client forever
        /// threadContext will be a TTransport instance
        /// </summary>
        /// <param name="threadContext"></param>
        private void Execute(Object threadContext)
        {
            TTransport client            = (TTransport)threadContext;
            TProcessor processor         = processorFactory.GetProcessor(client, this);
            TTransport inputTransport    = null;
            TTransport outputTransport   = null;
            TProtocol  inputProtocol     = null;
            TProtocol  outputProtocol    = null;
            Object     connectionContext = null;

            try
            {
                inputTransport  = inputTransportFactory.GetTransport(client);
                outputTransport = outputTransportFactory.GetTransport(client);
                inputProtocol   = inputProtocolFactory.GetProtocol(inputTransport);
                outputProtocol  = outputProtocolFactory.GetProtocol(outputTransport);

                //Recover event handler (if any) and fire createContext server event when a client connects
                if (serverEventHandler != null)
                {
                    connectionContext = serverEventHandler.createContext(inputProtocol, outputProtocol);
                }

                //Process client requests until client disconnects
                while (!stop)
                {
                    if (!inputTransport.Peek())
                    {
                        break;
                    }

                    //Fire processContext server event
                    //N.B. This is the pattern implemented in C++ and the event fires provisionally.
                    //That is to say it may be many minutes between the event firing and the client request
                    //actually arriving or the client may hang up without ever makeing a request.
                    if (serverEventHandler != null)
                    {
                        serverEventHandler.processContext(connectionContext, inputTransport);
                    }
                    //Process client request (blocks until transport is readable)
                    if (!processor.Process(inputProtocol, outputProtocol))
                    {
                        break;
                    }
                }
            }
            catch (TTransportException)
            {
                //Usually a client disconnect, expected
            }
            catch (Exception x)
            {
                //Unexpected
                logDelegate("Error: " + x);
            }

            //Fire deleteContext server event after client disconnects
            if (serverEventHandler != null)
            {
                serverEventHandler.deleteContext(connectionContext, inputProtocol, outputProtocol);
            }

            //Close transports
            if (inputTransport != null)
            {
                inputTransport.Close();
            }
            if (outputTransport != null)
            {
                outputTransport.Close();
            }
        }
        public TSimpleServer(TProcessor processor,
						  TServerTransport serverTransport)
            : base(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory())
        {
        }
Example #51
0
        public override void Serve()
        {
            try
            {
                serverTransport.Listen();
            }
            catch (TTransportException ttx)
            {
                logDelegate(ttx.ToString());
                return;
            }

            //Fire the preServe server event when server is up but before any client connections
            if (serverEventHandler != null)
            {
                serverEventHandler.preServe();
            }

            while (!stop)
            {
                TProcessor processor         = null;
                TTransport client            = null;
                TTransport inputTransport    = null;
                TTransport outputTransport   = null;
                TProtocol  inputProtocol     = null;
                TProtocol  outputProtocol    = null;
                Object     connectionContext = null;
                try
                {
                    using (client = serverTransport.Accept())
                    {
                        processor = processorFactory.GetProcessor(client);
                        if (client != null)
                        {
                            using (inputTransport = inputTransportFactory.GetTransport(client))
                            {
                                using (outputTransport = outputTransportFactory.GetTransport(client))
                                {
                                    inputProtocol  = inputProtocolFactory.GetProtocol(inputTransport);
                                    outputProtocol = outputProtocolFactory.GetProtocol(outputTransport);

                                    //Recover event handler (if any) and fire createContext server event when a client connects
                                    if (serverEventHandler != null)
                                    {
                                        connectionContext = serverEventHandler.createContext(inputProtocol, outputProtocol);
                                    }

                                    //Process client requests until client disconnects
                                    while (!stop)
                                    {
                                        if (!inputTransport.Peek())
                                        {
                                            break;
                                        }

                                        //Fire processContext server event
                                        //N.B. This is the pattern implemented in C++ and the event fires provisionally.
                                        //That is to say it may be many minutes between the event firing and the client request
                                        //actually arriving or the client may hang up without ever makeing a request.
                                        if (serverEventHandler != null)
                                        {
                                            serverEventHandler.processContext(connectionContext, inputTransport);
                                        }
                                        //Process client request (blocks until transport is readable)
                                        if (!processor.Process(inputProtocol, outputProtocol))
                                        {
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (TTransportException ttx)
                {
                    if (!stop || ttx.Type != TTransportException.ExceptionType.Interrupted)
                    {
                        logDelegate(ttx.ToString());
                    }
                }
                catch (Exception x)
                {
                    //Unexpected
                    logDelegate(x.ToString());
                }

                //Fire deleteContext server event after client disconnects
                if (serverEventHandler != null)
                {
                    serverEventHandler.deleteContext(connectionContext, inputProtocol, outputProtocol);
                }
            }
        }
Example #52
0
 public TThreadedServer(TProcessor processor, TServerTransport serverTransport) : this(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), 100, new TServer.LogDelegate(TServer.DefaultLogDelegate))
 {
 }
Example #53
0
        public THttpHandler(TProcessor processor)
            : this(processor, new TBinaryProtocol.Factory())
        {

        }
Example #54
0
 public TServer(TProcessor processor, TServerTransport serverTransport, TTransportFactory transportFactory) : this(processor, serverTransport, transportFactory, transportFactory, new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), new TServer.LogDelegate(TServer.DefaultLogDelegate))
 {
 }
Example #55
0
 public THttpHandler(TProcessor processor, TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory)
 {
     this.processor = processor;
     this.inputProtocolFactory = inputProtocolFactory;
     this.outputProtocolFactory = outputProtocolFactory;
 }
Example #56
0
 /// <summary>
 /// 'Register' a service with this TMultiplexedProcessor. This allows us to broker
 /// requests to individual services by using the service name to select them at request time.
 ///
 /// Args:
 /// - serviceName    Name of a service, has to be identical to the name
 ///                  declared in the Thrift IDL, e.g. "WeatherReport".
 /// - processor      Implementation of a service, usually referred to as "handlers",
 ///                  e.g. WeatherReportHandler implementing WeatherReport.Iface.
 /// </summary>
 public void RegisterProcessor(String serviceName, TProcessor processor)
 {
     ServiceProcessorMap.Add(serviceName, processor);
 }