CScheduler boost->std::function, use millisecs for times, not secs
This commit is contained in:
parent
72fb5158b1
commit
73296f54d6
3 changed files with 11 additions and 12 deletions
|
@ -2288,7 +2288,7 @@ bool CConnman::Start(CScheduler& scheduler, std::string& strNodeError, Options c
|
|||
threadMessageHandler = std::thread(&TraceThread<std::function<void()> >, "msghand", std::function<void()>(std::bind(&CConnman::ThreadMessageHandler, this)));
|
||||
|
||||
// Dump network addresses
|
||||
scheduler.scheduleEvery(boost::bind(&CConnman::DumpData, this), DUMP_ADDRESSES_INTERVAL);
|
||||
scheduler.scheduleEvery(std::bind(&CConnman::DumpData, this), DUMP_ADDRESSES_INTERVAL * 1000);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -104,20 +104,20 @@ void CScheduler::schedule(CScheduler::Function f, boost::chrono::system_clock::t
|
|||
newTaskScheduled.notify_one();
|
||||
}
|
||||
|
||||
void CScheduler::scheduleFromNow(CScheduler::Function f, int64_t deltaSeconds)
|
||||
void CScheduler::scheduleFromNow(CScheduler::Function f, int64_t deltaMilliSeconds)
|
||||
{
|
||||
schedule(f, boost::chrono::system_clock::now() + boost::chrono::seconds(deltaSeconds));
|
||||
schedule(f, boost::chrono::system_clock::now() + boost::chrono::milliseconds(deltaMilliSeconds));
|
||||
}
|
||||
|
||||
static void Repeat(CScheduler* s, CScheduler::Function f, int64_t deltaSeconds)
|
||||
static void Repeat(CScheduler* s, CScheduler::Function f, int64_t deltaMilliSeconds)
|
||||
{
|
||||
f();
|
||||
s->scheduleFromNow(boost::bind(&Repeat, s, f, deltaSeconds), deltaSeconds);
|
||||
s->scheduleFromNow(boost::bind(&Repeat, s, f, deltaMilliSeconds), deltaMilliSeconds);
|
||||
}
|
||||
|
||||
void CScheduler::scheduleEvery(CScheduler::Function f, int64_t deltaSeconds)
|
||||
void CScheduler::scheduleEvery(CScheduler::Function f, int64_t deltaMilliSeconds)
|
||||
{
|
||||
scheduleFromNow(boost::bind(&Repeat, this, f, deltaSeconds), deltaSeconds);
|
||||
scheduleFromNow(boost::bind(&Repeat, this, f, deltaMilliSeconds), deltaMilliSeconds);
|
||||
}
|
||||
|
||||
size_t CScheduler::getQueueInfo(boost::chrono::system_clock::time_point &first,
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
// boost::thread / boost::function / boost::chrono should be ported to
|
||||
// std::thread / std::function / std::chrono when we support C++11.
|
||||
//
|
||||
#include <boost/function.hpp>
|
||||
#include <boost/chrono/chrono.hpp>
|
||||
#include <boost/thread.hpp>
|
||||
#include <map>
|
||||
|
@ -23,7 +22,7 @@
|
|||
//
|
||||
// CScheduler* s = new CScheduler();
|
||||
// s->scheduleFromNow(doSomething, 11); // Assuming a: void doSomething() { }
|
||||
// s->scheduleFromNow(boost::bind(Class::func, this, argument), 3);
|
||||
// s->scheduleFromNow(std::bind(Class::func, this, argument), 3);
|
||||
// boost::thread* t = new boost::thread(boost::bind(CScheduler::serviceQueue, s));
|
||||
//
|
||||
// ... then at program shutdown, clean up the thread running serviceQueue:
|
||||
|
@ -39,20 +38,20 @@ public:
|
|||
CScheduler();
|
||||
~CScheduler();
|
||||
|
||||
typedef boost::function<void(void)> Function;
|
||||
typedef std::function<void(void)> Function;
|
||||
|
||||
// Call func at/after time t
|
||||
void schedule(Function f, boost::chrono::system_clock::time_point t);
|
||||
|
||||
// Convenience method: call f once deltaSeconds from now
|
||||
void scheduleFromNow(Function f, int64_t deltaSeconds);
|
||||
void scheduleFromNow(Function f, int64_t deltaMilliSeconds);
|
||||
|
||||
// Another convenience method: call f approximately
|
||||
// every deltaSeconds forever, starting deltaSeconds from now.
|
||||
// To be more precise: every time f is finished, it
|
||||
// is rescheduled to run deltaSeconds later. If you
|
||||
// need more accurate scheduling, don't use this method.
|
||||
void scheduleEvery(Function f, int64_t deltaSeconds);
|
||||
void scheduleEvery(Function f, int64_t deltaMilliSeconds);
|
||||
|
||||
// To keep things as simple as possible, there is no unschedule.
|
||||
|
||||
|
|
Loading…
Reference in a new issue