From 19d73bd4779094b65e1492140276b1c5b3ee0ac3 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 19 Nov 2012 15:41:45 -0800 Subject: [PATCH] More tie ins. --- src/cpp/ripple/JobQueue.cpp | 3 ++- src/cpp/ripple/JobQueue.h | 9 ++++++++- src/cpp/ripple/Peer.cpp | 5 ++++- src/cpp/ripple/WSHandler.h | 5 ++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/cpp/ripple/JobQueue.cpp b/src/cpp/ripple/JobQueue.cpp index cdf126e234..d0e32610cb 100644 --- a/src/cpp/ripple/JobQueue.cpp +++ b/src/cpp/ripple/JobQueue.cpp @@ -1,6 +1,5 @@ #include "JobQueue.h" -#include #include #include #include @@ -21,6 +20,8 @@ const char* Job::toString(JobType t) case jtPROPOSAL_t: return "trustedProposal"; case jtADMIN: return "administration"; case jtDEATH: return "jobOfDeath"; + case jtCLIENT: return "clientCommand"; + case jtPEER: return "peerCommand"; default: assert(false); return "unknown"; } } diff --git a/src/cpp/ripple/JobQueue.h b/src/cpp/ripple/JobQueue.h index 060c9f1da8..33694c2559 100644 --- a/src/cpp/ripple/JobQueue.h +++ b/src/cpp/ripple/JobQueue.h @@ -31,8 +31,12 @@ enum JobType jtPROPOSAL_t = 7, // A proposal from a trusted source jtADMIN = 8, // An administrative operation jtDEATH = 9, // job of death, used internally + +// special types not dispatched by the job pool + jtCLIENT = 10, + jtPEER = 11, }; -#define NUM_JOB_TYPES 10 +#define NUM_JOB_TYPES 16 class Job { @@ -93,6 +97,9 @@ public: void shutdown(); void setThreadCount(int c = 0); + LoadEvent::pointer getLoadEvent(JobType t) + { return boost::make_shared(boost::ref(mJobLoads[t]), true, 1); } + Json::Value getJson(int c = 0); }; diff --git a/src/cpp/ripple/Peer.cpp b/src/cpp/ripple/Peer.cpp index f364df838b..76e396b3e3 100644 --- a/src/cpp/ripple/Peer.cpp +++ b/src/cpp/ripple/Peer.cpp @@ -373,8 +373,11 @@ void Peer::processReadBuffer() // std::cerr << "Peer::processReadBuffer: " << mIpPort.first << " " << mIpPort.second << std::endl; - // If connected and get a mtHELLO or if not connected and get a non-mtHELLO, wrong message was sent. + LoadEvent::pointer event = theApp->getJobQueue().getLoadEvent(jtPEER); + boost::recursive_mutex::scoped_lock sl(theApp->getMasterLock()); + + // If connected and get a mtHELLO or if not connected and get a non-mtHELLO, wrong message was sent. if (mHelloed == (type == ripple::mtHELLO)) { cLog(lsWARNING) << "Wrong message type: " << type; diff --git a/src/cpp/ripple/WSHandler.h b/src/cpp/ripple/WSHandler.h index 43c9a9ce66..306647c5c5 100644 --- a/src/cpp/ripple/WSHandler.h +++ b/src/cpp/ripple/WSHandler.h @@ -1,6 +1,8 @@ #ifndef __WSHANDLER__ #define __WSHANDLER__ +#include "Application.h" + class WSConnection; // A single instance of this object is made. @@ -87,10 +89,11 @@ public: void on_message(connection_ptr cpClient, message_ptr mpMessage) { + LoadEvent::pointer event = theApp->getJobQueue().getLoadEvent(jtCLIENT); Json::Value jvRequest; Json::Reader jrReader; - cLog(lsDEBUG) << "Ws:: Receiving '" << mpMessage->get_payload() << "'"; + cLog(lsDEBUG) << "Ws:: Receiving '" << mpMessage->get_payload() << "'"; if (mpMessage->get_opcode() != websocketpp::frame::opcode::TEXT) {