Bitcoin Core  0.20.99
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
 

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 (Function f, std::chrono::milliseconds delta)
 Repeat f until the scheduler is stopped. 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 38 of file scheduler.h.

Member Typedef Documentation

◆ Function

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

Definition at line 44 of file scheduler.h.

Constructor & Destructor Documentation

◆ CScheduler()

CScheduler::CScheduler ( )

Definition at line 12 of file scheduler.cpp.

◆ ~CScheduler()

CScheduler::~CScheduler ( )

Definition at line 16 of file scheduler.cpp.

Member Function Documentation

◆ AreThreadsServicingQueue()

bool CScheduler::AreThreadsServicingQueue ( ) const

Definition at line 140 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 128 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 93 of file scheduler.h.

◆ GUARDED_BY() [3/4]

bool stopRequested CScheduler::GUARDED_BY ( newTaskMutex  )
inlineprivate

Definition at line 94 of file scheduler.h.

◆ GUARDED_BY() [4/4]

bool stopWhenEmpty CScheduler::GUARDED_BY ( newTaskMutex  )
inlineprivate

Definition at line 95 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 95 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 86 of file scheduler.cpp.

Here is the caller graph for this function:

◆ scheduleEvery()

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

Repeat f until the scheduler is stopped.

First run is after delta has passed once.

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

Definition at line 123 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 50 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 23 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 96 of file scheduler.h.

Here is the caller graph for this function:

◆ stop()

void CScheduler::stop ( bool  drain = false)

Definition at line 74 of file scheduler.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ newTaskMutex

Mutex CScheduler::newTaskMutex
mutableprivate

Definition at line 90 of file scheduler.h.

◆ newTaskScheduled

std::condition_variable CScheduler::newTaskScheduled
private

Definition at line 91 of file scheduler.h.


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