Instantiate an RPCHandler per request.

RPCHandlers are pretty light objects and this allows us to pass in
parameters like the InfoSub object without locking or adding more
parameters to the RPC methods.
This commit is contained in:
Stefan Thomas
2012-11-10 15:51:45 -08:00
parent b6bbef84cf
commit f5a6fdbab9
5 changed files with 34 additions and 31 deletions

View File

@@ -26,7 +26,7 @@ SETUP_LOG();
#endif
RPCServer::RPCServer(boost::asio::io_service& io_service , NetworkOPs* nopNetwork)
: mNetOps(nopNetwork), mRPCHandler(nopNetwork), mSocket(io_service)
: mNetOps(nopNetwork), mSocket(io_service)
{
mRole = RPCHandler::GUEST;
@@ -142,6 +142,8 @@ std::string RPCServer::handleRequest(const std::string& requestStr)
else if (!valParams.isArray())
return(HTTPReply(400, "params unparseable"));
RPCHandler mRPCHandler(mNetOps);
cLog(lsTRACE) << valParams;
Json::Value result = mRPCHandler.doCommand(strMethod, valParams,mRole);
cLog(lsTRACE) << result;