Use std::function in JobQueue.

This commit is contained in:
Tom Ritchford
2015-08-09 20:34:54 -04:00
committed by Nik Bougalis
parent 545b2fd6b1
commit a6f866b4d8
4 changed files with 15 additions and 16 deletions

View File

@@ -642,11 +642,14 @@ void LedgerConsensusImp::handleLCL (uint256 const& lclHash)
// Tell the ledger acquire system that we need the consensus ledger
mAcquiringLedger = mPrevLedgerHash;
getApp().getJobQueue().addJob (jtADVANCE, "getConsensusLedger",
std::bind (
&InboundLedgers::acquire,
&getApp().getInboundLedgers(),
mPrevLedgerHash, 0, InboundLedger::fcCONSENSUS));
auto& previousHash = mPrevLedgerHash;
auto acquire = [previousHash] (Job&) {
getApp().getInboundLedgers().acquire(
previousHash, 0, InboundLedger::fcCONSENSUS);
};
getApp().getJobQueue().addJob (
jtADVANCE, "getConsensusLedger", acquire);
;
mHaveCorrectLCL = false;
}
return;

View File

@@ -36,15 +36,11 @@ protected:
JobQueue (char const* name, Stoppable& parent);
public:
using JobFunction = std::function <void (Job&)>;
virtual ~JobQueue () { }
// VFALCO NOTE Using boost::function here because Visual Studio 2012
// std::function doesn't swallow return types.
//
// TODO Replace with std::function
//
virtual void addJob (JobType type,
std::string const& name, boost::function <void (Job&)> const& job) = 0;
virtual void addJob (
JobType, std::string const& name, JobFunction const&) = 0;
// Jobs waiting at this priority
virtual int getJobCount (JobType t) const = 0;

View File

@@ -115,8 +115,8 @@ public:
job_count = m_jobSet.size ();
}
void addJob (JobType type, std::string const& name,
boost::function <void (Job&)> const& jobFunc) override
void addJob (
JobType type, std::string const& name, JobFunction const& func) override
{
assert (type != jtINVALID);
@@ -166,7 +166,7 @@ public:
std::pair <std::set <Job>::iterator, bool> result (
m_jobSet.insert (Job (type, name, ++m_lastJob,
data.load (), jobFunc, m_cancelCallback)));
data.load (), func, m_cancelCallback)));
queueJob (*result.first, lock);
}
}

View File

@@ -38,7 +38,7 @@ namespace {
void runOnJobQueue(std::string const& name, Callback const& callback)
{
boost::function <void (Job&)> cb([callback] (Job&) { callback(); });
auto cb = [callback] (Job&) { callback(); };
getApp().getJobQueue().addJob(jtCLIENT, name, cb);
};