THRIFT-1314. cpp: add TProcessorFactory
Patch: Adam Simpkins
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1164190 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/cpp/src/server/TNonblockingServer.cpp b/lib/cpp/src/server/TNonblockingServer.cpp
index b817260..8d72a15 100644
--- a/lib/cpp/src/server/TNonblockingServer.cpp
+++ b/lib/cpp/src/server/TNonblockingServer.cpp
@@ -88,6 +88,9 @@
/// Server handle
TNonblockingServer* server_;
+ /// TProcessor
+ boost::shared_ptr<TProcessor> processor_;
+
/// Object wrapping network socket
boost::shared_ptr<TSocket> tSocket_;
@@ -420,6 +423,9 @@
} else {
connectionContext_ = NULL;
}
+
+ // Get the processor
+ processor_ = s->getProcessor(inputProtocol_, outputProtocol_, tSocket_);
}
void TNonblockingServer::TConnection::workSocket() {
@@ -572,7 +578,7 @@
// Create task and dispatch to the thread manager
boost::shared_ptr<Runnable> task =
- boost::shared_ptr<Runnable>(new Task(server_->getProcessor(),
+ boost::shared_ptr<Runnable>(new Task(processor_,
inputProtocol_,
outputProtocol_,
this));
@@ -595,8 +601,8 @@
} else {
try {
// Invoke the processor
- server_->getProcessor()->process(inputProtocol_, outputProtocol_,
- connectionContext_);
+ processor_->process(inputProtocol_, outputProtocol_,
+ connectionContext_);
} catch (const TTransportException &ttx) {
GlobalOutput.printf("TNonblockingServer transport error in "
"process(): %s", ttx.what());