StuBS
Bellringer Class Reference

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

#include <bellringer.h>

Collaboration diagram for Bellringer:

Public Member Functions

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

Private Attributes

Queue< Bellbells
 List of bells currently managed. 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

◆ bellPending()

bool Bellringer::bellPending ( )

Checks whether there are enqueued bells.

Returns
true if there are enqueued bells, false otherwise

◆ cancel()

void Bellringer::cancel ( Bell bell)

Cancel ticking & ringing a bell.

Parameters
bellBell that should not be rung.

◆ check()

void Bellringer::check ( )

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 
)

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

◆ residual()

unsigned int Bellringer::residual ( Bell bell)

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

Member Data Documentation

◆ bells

Queue<Bell> Bellringer::bells
private

List of bells currently managed.

This list contains non-expired bells enqueued by job(). These bells will be checked on every call to check().

All elements that should be inserted into a Queue instance are required to be derived from Queue<Bell>::Node.


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