*/
std::stack<TConnection*> connectionStack_;
+ // Pointer to optional function called after opening the listen socket and
+ // before running the event loop, along with its argument data
+ void (*preServeCallback_)(void*);
+ void* preServeCallbackArg_;
+
void handleEvent(int fd, short which);
public:
serverSocket_(0),
port_(port),
frameResponses_(true),
- threadPoolProcessing_(false) {}
+ threadPoolProcessing_(false),
+ preServeCallback_(NULL),
+ preServeCallbackArg_(NULL) {}
TNonblockingServer(boost::shared_ptr<TProcessor> processor,
boost::shared_ptr<TProtocolFactory> protocolFactory,
serverSocket_(0),
port_(port),
frameResponses_(true),
- threadManager_(threadManager) {
+ threadManager_(threadManager),
+ preServeCallback_(NULL),
+ preServeCallbackArg_(NULL) {
setInputTransportFactory(boost::shared_ptr<TTransportFactory>(new TTransportFactory()));
setOutputTransportFactory(boost::shared_ptr<TTransportFactory>(new TTransportFactory()));
setInputProtocolFactory(protocolFactory);
serverSocket_(0),
port_(port),
frameResponses_(true),
- threadManager_(threadManager) {
+ threadManager_(threadManager),
+ preServeCallback_(NULL),
+ preServeCallbackArg_(NULL) {
setInputTransportFactory(inputTransportFactory);
setOutputTransportFactory(outputTransportFactory);
setInputProtocolFactory(inputProtocolFactory);
}
void serve();
+
+ void setPreServeCallback(void(*fn_ptr)(void*), void* arg = NULL) {
+ preServeCallback_ = fn_ptr;
+ preServeCallbackArg_ = arg;
+ }
+
};
/**