Bitcoin ABC  0.22.15
P2P Digital Currency
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
CScheduler Class Reference

#include <scheduler.h>

Collaboration diagram for CScheduler:
[legend]

Public Types

typedef std::function< void()> Function
 
typedef std::function< bool()> Predicate
 

Public Member Functions

 CScheduler ()
 
 ~CScheduler ()
 
void schedule (Function f, std::chrono::system_clock::time_point t)
 
void scheduleFromNow (Function f, std::chrono::milliseconds delta)
 Call f once after the delta has passed. More...
 
void scheduleEvery (Predicate p, std::chrono::milliseconds delta)
 Repeat p until it return false. More...
 
void MockForward (std::chrono::seconds delta_seconds)
 Mock the scheduler to fast forward in time. More...
 
void serviceQueue ()
 
void stop (bool drain=false)
 
size_t getQueueInfo (std::chrono::system_clock::time_point &first, std::chrono::system_clock::time_point &last) const
 
bool AreThreadsServicingQueue () const
 

Private Member Functions

std::multimap< std::chrono::system_clock::time_point, Function > taskQueue GUARDED_BY (newTaskMutex)
 
int nThreadsServicingQueue GUARDED_BY (newTaskMutex)
 
bool stopRequested GUARDED_BY (newTaskMutex)
 
bool stopWhenEmpty GUARDED_BY (newTaskMutex)
 
bool shouldStop () const EXCLUSIVE_LOCKS_REQUIRED(newTaskMutex)
 

Private Attributes

Mutex newTaskMutex
 
std::condition_variable newTaskScheduled
 

Detailed Description

Definition at line 41 of file scheduler.h.

Member Typedef Documentation

◆ Function

typedef std::function<void()> CScheduler::Function

Definition at line 46 of file scheduler.h.

◆ Predicate

typedef std::function<bool()> CScheduler::Predicate

Definition at line 47 of file scheduler.h.

Constructor & Destructor Documentation

◆ CScheduler()

CScheduler::CScheduler ( )

Definition at line 12 of file scheduler.cpp.

◆ ~CScheduler()

CScheduler::~CScheduler ( )

Definition at line 14 of file scheduler.cpp.

Member Function Documentation

◆ AreThreadsServicingQueue()

bool CScheduler::AreThreadsServicingQueue ( ) const

Definition at line 144 of file scheduler.cpp.

Here is the caller graph for this function:

◆ getQueueInfo()

size_t CScheduler::getQueueInfo ( std::chrono::system_clock::time_point &  first,
std::chrono::system_clock::time_point &  last 
) const

Definition at line 133 of file scheduler.cpp.

Here is the caller graph for this function:

◆ GUARDED_BY() [1/4]

std::multimap<std::chrono::system_clock::time_point, Function> taskQueue CScheduler::GUARDED_BY ( newTaskMutex  )
private

◆ GUARDED_BY() [2/4]

int nThreadsServicingQueue CScheduler::GUARDED_BY ( newTaskMutex  )
inlineprivate

Definition at line 97 of file scheduler.h.

◆ GUARDED_BY() [3/4]

bool stopRequested CScheduler::GUARDED_BY ( newTaskMutex  )
inlineprivate

Definition at line 98 of file scheduler.h.

◆ GUARDED_BY() [4/4]

bool stopWhenEmpty CScheduler::GUARDED_BY ( newTaskMutex  )
inlineprivate

Definition at line 99 of file scheduler.h.

◆ MockForward()

void CScheduler::MockForward ( std::chrono::seconds  delta_seconds)

Mock the scheduler to fast forward in time.

Iterates through items on taskQueue and reschedules them to be delta_seconds sooner.

Definition at line 96 of file scheduler.cpp.

Here is the caller graph for this function:

◆ schedule()

void CScheduler::schedule ( CScheduler::Function  f,
std::chrono::system_clock::time_point  t 
)

Definition at line 87 of file scheduler.cpp.

Here is the caller graph for this function:

◆ scheduleEvery()

void CScheduler::scheduleEvery ( CScheduler::Predicate  p,
std::chrono::milliseconds  delta 
)

Repeat p until it return false.

First run is after delta has passed once.

The timing is not exact: Every time p is finished, it is rescheduled to run again after delta. If you need more accurate scheduling, don't use this method.

Definition at line 127 of file scheduler.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scheduleFromNow()

void CScheduler::scheduleFromNow ( Function  f,
std::chrono::milliseconds  delta 
)
inline

Call f once after the delta has passed.

Definition at line 53 of file scheduler.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ serviceQueue()

void CScheduler::serviceQueue ( )

Definition at line 21 of file scheduler.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shouldStop()

bool CScheduler::shouldStop ( ) const
inlineprivate

Definition at line 100 of file scheduler.h.

Here is the caller graph for this function:

◆ stop()

void CScheduler::stop ( bool  drain = false)

Definition at line 75 of file scheduler.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ newTaskMutex

Mutex CScheduler::newTaskMutex
mutableprivate

Definition at line 93 of file scheduler.h.

◆ newTaskScheduled

std::condition_variable CScheduler::newTaskScheduled
private

Definition at line 94 of file scheduler.h.


The documentation for this class was generated from the following files: