StuBS
Bellringer Class Reference

Manages and activates time-triggered activities. More...

#include <sync/bellringer.h>

Static Public Member Functions

static void check ()
 Checks whether there are bells to be rung. More...
 
static void job (Bell *bell, unsigned int ms)
 Passes a bell to the bellringer to be rung after ms milliseconds. More...
 
static void cancel (Bell *bell)
 Cancel ticking & ringing a bell. More...
 
static unsigned int residual (Bell *bell)
 Returns the remaining time until bell will ring. More...
 
static bool bellPending ()
 Checks whether there are enqueued bells. More...
 

Detailed Description

Manages and activates time-triggered activities.

The Bellringer is regularly activated and checks whether any of the bells should ring. The bells are stored in a Queue<Bell> that is managed by the Bellringer. A clever implementation avoids iterating through the whole list for every iteration by keeping the bells sorted and storing delta times. This approach leads to a complexity of O(1) for the method called by the timer interrupt in case no bells need to be rung.

Member Function Documentation

◆ check()

void Bellringer::check ( )
static

Checks whether there are bells to be rung.

Every call to check elapses a tick. Once such a tick reduces a bells remaining time to zero, the bell will be rung.

◆ job()

void Bellringer::job ( Bell bell,
unsigned int  ms 
)
static

Passes a bell to the bellringer to be rung after ms milliseconds.

Parameters
bellBell that should be rung after ms milliseconds
msnumber of milliseconds that should be waited before ringing the bell

◆ cancel()

void Bellringer::cancel ( Bell bell)
static

Cancel ticking & ringing a bell.

Parameters
bellBell that should not be rung.

◆ residual()

unsigned int Bellringer::residual ( Bell bell)
static

Returns the remaining time until bell will ring.

Parameters
bellThe bell for which the remaining time should be returned
Returns
Remaining time in milliseconds
Optional:
Implement Method

◆ bellPending()

bool Bellringer::bellPending ( )
static

Checks whether there are enqueued bells.

Returns
true if there are enqueued bells, false otherwise

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