1 // Copyright (c) 2006- Facebook
2 // Distributed under the Thrift Software License
4 // See accompanying file LICENSE or visit the Thrift site at:
5 // http://developers.facebook.com/thrift/
7 #ifndef _THRIFT_SERVER_TTHREADEDSERVER_H_
8 #define _THRIFT_SERVER_TTHREADEDSERVER_H_ 1
10 #include <server/TServer.h>
11 #include <transport/TServerTransport.h>
12 #include <concurrency/Monitor.h>
13 #include <concurrency/Thread.h>
15 #include <boost/shared_ptr.hpp>
17 namespace facebook
{ namespace thrift
{ namespace server
{
19 using facebook::thrift::TProcessor
;
20 using facebook::thrift::transport::TServerTransport
;
21 using facebook::thrift::transport::TTransportFactory
;
22 using facebook::thrift::concurrency::Monitor
;
23 using facebook::thrift::concurrency::ThreadFactory
;
25 class TThreadedServer
: public TServer
{
30 TThreadedServer(boost::shared_ptr
<TProcessor
> processor
,
31 boost::shared_ptr
<TServerTransport
> serverTransport
,
32 boost::shared_ptr
<TTransportFactory
> transportFactory
,
33 boost::shared_ptr
<TProtocolFactory
> protocolFactory
);
35 virtual ~TThreadedServer();
41 serverTransport_
->interrupt();
45 boost::shared_ptr
<ThreadFactory
> threadFactory_
;
48 Monitor tasksMonitor_
;
49 std::set
<Task
*> tasks_
;
53 }}} // facebook::thrift::server
55 #endif // #ifndef _THRIFT_SERVER_TTHREADEDSERVER_H_