Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
driver_base::Driver Class Referenceabstract

#include <driver.h>

Public Types

typedef char state_t
 

Public Member Functions

void clearRecoveryComplete ()
 
bool close ()
 
 Driver ()
 
virtual std::string getID ()=0
 
bool getRecoveryComplete ()
 
state_t getState ()
 
const std::string getStateName ()
 
const std::string getStatusMessage ()
 
bool getStatusOk ()
 
bool goClosed ()
 
bool goOpened ()
 
bool goRunning ()
 
bool goState (state_t target)
 
bool isClosed ()
 
bool isOpened ()
 
bool isRunning ()
 
bool isStopped ()
 
bool lowerState (state_t target)
 
bool open ()
 
bool raiseState (state_t target)
 
void setPostOpenHook (hookFunction f)
 
void setStatusMessage (const std::string &msg, bool ok=false, bool recovery_complete=false)
 
void setStatusMessagef (const char *format,...)
 
bool start ()
 
bool stop ()
 
virtual ~Driver ()
 

Static Public Member Functions

static const std::stringgetStateName (state_t s)
 

Public Attributes

boost::recursive_mutex mutex_
 

Static Public Attributes

static const state_t CLOSED = 0
 
static const state_t OPENED = 1
 
static const state_t RUNNING = 2
 

Protected Types

typedef boost::function< void() > hookFunction
 

Protected Member Functions

virtual void doClose ()=0
 
virtual void doOpen ()=0
 
virtual void doStart ()=0
 
virtual void doStop ()=0
 

Protected Attributes

hookFunction postOpenHook
 
state_t state_
 

Private Member Functions

const std::stringgetTransitionName (void(Driver::*transition)())
 
bool tryTransition (state_t target, void(Driver::*transition)())
 

Private Attributes

std::string status_message_
 
boost::mutex status_message_mutex_
 
bool status_ok_
 
bool status_recovery_complete_
 

Detailed Description

State transition functions assume that they are called from the correct state. It is the caller's responsibility to check that the state is correct. The Driver mutex_ should always be locked by the caller before checking the current state and throughout the call to the transition function.

State should not change between calls to the transition function except for transitions from RUNNING to STOPPED. The device must hold its lock while doing this transition to allow the caller to enforce that stop is only called from the RUNNING state.

Transitions may fail. It is the caller's responsibility to check success by looking at the device's state_. After a failure, the device can set itself into any state. For example, if a call to start() fails, the device may end up in the CLOSED state.

Definition at line 68 of file driver.h.

Member Typedef Documentation

typedef boost::function< void() > driver_base::Driver::hookFunction
protected

Definition at line 81 of file driver.h.

Definition at line 71 of file driver.h.

Constructor & Destructor Documentation

driver_base::Driver::Driver ( )
inline

Definition at line 244 of file driver.h.

virtual driver_base::Driver::~Driver ( )
inlinevirtual

Definition at line 245 of file driver.h.

Member Function Documentation

void driver_base::Driver::clearRecoveryComplete ( )
inline

Definition at line 257 of file driver.h.

bool driver_base::Driver::close ( )
inline

Definition at line 193 of file driver.h.

virtual void driver_base::Driver::doClose ( )
protectedpure virtual
virtual void driver_base::Driver::doOpen ( )
protectedpure virtual
virtual void driver_base::Driver::doStart ( )
protectedpure virtual
virtual void driver_base::Driver::doStop ( )
protectedpure virtual
virtual std::string driver_base::Driver::getID ( )
pure virtual
bool driver_base::Driver::getRecoveryComplete ( )
inline

Definition at line 252 of file driver.h.

state_t driver_base::Driver::getState ( )
inline

Definition at line 219 of file driver.h.

const std::string driver_base::Driver::getStateName ( )
inline

Definition at line 224 of file driver.h.

static const std::string& driver_base::Driver::getStateName ( state_t  s)
inlinestatic

Definition at line 229 of file driver.h.

const std::string driver_base::Driver::getStatusMessage ( )
inline

Definition at line 262 of file driver.h.

bool driver_base::Driver::getStatusOk ( )
inline

Definition at line 247 of file driver.h.

const std::string& driver_base::Driver::getTransitionName ( void(Driver::*)()  transition)
inlineprivate

Definition at line 292 of file driver.h.

bool driver_base::Driver::goClosed ( )
inline

Definition at line 173 of file driver.h.

bool driver_base::Driver::goOpened ( )
inline

Definition at line 168 of file driver.h.

bool driver_base::Driver::goRunning ( )
inline

Definition at line 163 of file driver.h.

bool driver_base::Driver::goState ( state_t  target)
inline

Definition at line 104 of file driver.h.

bool driver_base::Driver::isClosed ( )
inline

Definition at line 208 of file driver.h.

bool driver_base::Driver::isOpened ( )
inline

Definition at line 203 of file driver.h.

bool driver_base::Driver::isRunning ( )
inline

Definition at line 198 of file driver.h.

bool driver_base::Driver::isStopped ( )
inline

Definition at line 213 of file driver.h.

bool driver_base::Driver::lowerState ( state_t  target)
inline

Definition at line 140 of file driver.h.

bool driver_base::Driver::open ( )
inline

Definition at line 188 of file driver.h.

bool driver_base::Driver::raiseState ( state_t  target)
inline

Definition at line 117 of file driver.h.

void driver_base::Driver::setPostOpenHook ( hookFunction  f)
inline

Definition at line 91 of file driver.h.

void driver_base::Driver::setStatusMessage ( const std::string msg,
bool  ok = false,
bool  recovery_complete = false 
)
inline

Definition at line 271 of file driver.h.

void driver_base::Driver::setStatusMessagef ( const char *  format,
  ... 
)
inline

Definition at line 280 of file driver.h.

bool driver_base::Driver::start ( )
inline

Definition at line 183 of file driver.h.

bool driver_base::Driver::stop ( )
inline

Definition at line 178 of file driver.h.

bool driver_base::Driver::tryTransition ( state_t  target,
void(Driver::*)()  transition 
)
inlineprivate
Todo:
print the exception message better.

Definition at line 312 of file driver.h.

Member Data Documentation

const state_t driver_base::Driver::CLOSED = 0
static
Todo:
should this be protected?

Definition at line 100 of file driver.h.

boost::recursive_mutex driver_base::Driver::mutex_

Definition at line 98 of file driver.h.

const state_t driver_base::Driver::OPENED = 1
static

Definition at line 101 of file driver.h.

hookFunction driver_base::Driver::postOpenHook
protected

Definition at line 82 of file driver.h.

const state_t driver_base::Driver::RUNNING = 2
static

Definition at line 102 of file driver.h.

state_t driver_base::Driver::state_
protected

Definition at line 74 of file driver.h.

std::string driver_base::Driver::status_message_
private

Definition at line 85 of file driver.h.

boost::mutex driver_base::Driver::status_message_mutex_
private

Definition at line 86 of file driver.h.

bool driver_base::Driver::status_ok_
private

Definition at line 87 of file driver.h.

bool driver_base::Driver::status_recovery_complete_
private

Definition at line 88 of file driver.h.


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


driver_base
Author(s): Blaise Gassend
autogenerated on Tue Mar 23 2021 02:23:29