FastArduino  v1.8
C++ library to build fast but small Arduino/AVR projects
lifecycle::AbstractLifeCycleManager Class Reference

The abstract base class of all LifeCycleManager. More...

#include <fastarduino/lifecycle.h>

Inheritance diagram for lifecycle::AbstractLifeCycleManager:

Public Member Functions

template<typename T >
uint8_t register_ (LifeCycle< T > &instance)
 Register a LifeCycle<T> instance with this LifeCycleManager. More...
 
bool unregister_ (uint8_t id)
 Unregisters a LifeCycle<T> instance, identified by id, already registered with this LifeCycleManager. More...
 
uint8_t available_ () const
 Return the number of available "slots" for registration of new LifeCycle<T> instances. More...
 
bool move_ (uint8_t id, AbstractLifeCycle &dest)
 Move an already registered LifeCycle<T> instance (identified by id) to a new location, determine by dest. More...
 
template<typename T >
LifeCycle< T > * find_ (uint8_t id) const
 Find an existing LifeCycle<T> registered with this LifeCycleManager and identified by id. More...
 

Detailed Description

The abstract base class of all LifeCycleManager.

It encapsulates all needed API for lifecycle management.

See also
LifeCycleManager
LifeCycle

Definition at line 131 of file lifecycle.h.

Member Function Documentation

◆ register_()

template<typename T >
uint8_t lifecycle::AbstractLifeCycleManager::register_ ( LifeCycle< T > &  instance)
inline

Register a LifeCycle<T> instance with this LifeCycleManager.

From now on, instance is tracked by this LifeCycleManager, in particular if it is moved around, its latest address is updated. It is assigned a unique identifier so that it can be retrieved, later on, by calling find_().

Warning
This method is NOT synchronized and should be called either from an ISR, or from a synchronized block.
Template Parameters
Tthe type encapsulated in a LifeCycle<T> type
Parameters
instancea reference to an LifeCycle<T> to register with this LifeCycleManager
Returns
a unique identifier for the registered instance
Return values
0if an error occurred; this can happen when too many instances are already registered with this LifeCycleManager, or when instance is already registered (with yhis or any LifeCycleManager).
See also
LifeCycle
unregister_()
find_()

Definition at line 156 of file lifecycle.h.

◆ unregister_()

bool lifecycle::AbstractLifeCycleManager::unregister_ ( uint8_t  id)
inline

Unregisters a LifeCycle<T> instance, identified by id, already registered with this LifeCycleManager.

Note
This is automatically called by LifeCycle<T> destructor.
Warning
This method is NOT synchronized and should be called either from an ISR, or from a synchronized block.
Parameters
idthe unique identifier for the LifeCycle<T> instance to unregister; this is the value returned by register_().
Return values
trueif the LifeCycle<T> instance was found and successfully deregistered
falseif there is no registered instance identified by id
See also
register_()

Definition at line 178 of file lifecycle.h.

◆ available_()

uint8_t lifecycle::AbstractLifeCycleManager::available_ ( ) const
inline

Return the number of available "slots" for registration of new LifeCycle<T> instances.

Note
This method is atomic, hnece it can freely be called from an ISR or normal code without any synchronization required.

Definition at line 198 of file lifecycle.h.

◆ move_()

bool lifecycle::AbstractLifeCycleManager::move_ ( uint8_t  id,
AbstractLifeCycle dest 
)
inline

Move an already registered LifeCycle<T> instance (identified by id) to a new location, determine by dest.

Once this method is called, the previous LifeCycle<T> instance becomes unusable (its identifier is reset to 0).

Warning
This method is automatically called when a registered LifeCycle<T> is moved to another instance. You should normally never need to call this method directly.
This method is NOT synchronized and should be called either from an ISR, or from a synchronized block.
Parameters
idthe unique identifier for the LifeCycle<T> instance to move; this is the value returned by register_().
desta reference to a LifeCycle<T> instance to receive the instance currently identified by id
Return values
trueif the LifeCycle<T> instance was found and successfully moved to dest
falseif there is no registered instance identified by id

Definition at line 224 of file lifecycle.h.

◆ find_()

template<typename T >
LifeCycle<T>* lifecycle::AbstractLifeCycleManager::find_ ( uint8_t  id) const
inline

Find an existing LifeCycle<T> registered with this LifeCycleManager and identified by id.

This is the only way to get a pointer to the right location of an instance.

Warning
A LifeCycleManager can hold LifeCycle<T> instances of any T type, it does not keep information about actual type of a LifeCycle; hence it cannot ensure safe casting in find_() method. It is the responsibility of the application developer to ensure consistency of the type used in register_() and in find_() for the same id !
This method is NOT synchronized and should be called either from an ISR, or from a synchronized block.
Template Parameters
Tthe type encapsulated in a LifeCycle<T> type
Parameters
idthe unique identifier for the LifeCycle<T> instance to look for; this is the value returned by register_().
Returns
a pointer to the found LifeCycle<T> instance
Return values
nullptrif there is no registered instance identified by id
See also
LifeCycle
register_()

Definition at line 263 of file lifecycle.h.


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