driver_base::Driver Class Reference

#include <driver.h>

List of all members.

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::string & getStateName (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::string & getTransitionName (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 61 of file driver.h.


Member Typedef Documentation

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

Definition at line 52 of file driver.h.

Definition at line 42 of file driver.h.


Constructor & Destructor Documentation

driver_base::Driver::Driver (  )  [inline]

Definition at line 215 of file driver.h.

virtual driver_base::Driver::~Driver (  )  [inline, virtual]

Definition at line 216 of file driver.h.


Member Function Documentation

void driver_base::Driver::clearRecoveryComplete (  )  [inline]

Definition at line 228 of file driver.h.

bool driver_base::Driver::close (  )  [inline]

Definition at line 164 of file driver.h.

virtual void driver_base::Driver::doClose (  )  [protected, pure virtual]
virtual void driver_base::Driver::doOpen (  )  [protected, pure virtual]
virtual void driver_base::Driver::doStart (  )  [protected, pure virtual]
virtual void driver_base::Driver::doStop (  )  [protected, pure virtual]
virtual std::string driver_base::Driver::getID (  )  [pure virtual]
bool driver_base::Driver::getRecoveryComplete (  )  [inline]

Definition at line 223 of file driver.h.

state_t driver_base::Driver::getState (  )  [inline]

Definition at line 190 of file driver.h.

static const std::string& driver_base::Driver::getStateName ( state_t  s  )  [inline, static]

Definition at line 200 of file driver.h.

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

Definition at line 195 of file driver.h.

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

Definition at line 233 of file driver.h.

bool driver_base::Driver::getStatusOk (  )  [inline]

Definition at line 218 of file driver.h.

const std::string& driver_base::Driver::getTransitionName ( void(Driver::*)()  transition  )  [inline, private]

Definition at line 263 of file driver.h.

bool driver_base::Driver::goClosed (  )  [inline]

Definition at line 144 of file driver.h.

bool driver_base::Driver::goOpened (  )  [inline]

Definition at line 139 of file driver.h.

bool driver_base::Driver::goRunning (  )  [inline]

Definition at line 134 of file driver.h.

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

Definition at line 75 of file driver.h.

bool driver_base::Driver::isClosed (  )  [inline]

Definition at line 179 of file driver.h.

bool driver_base::Driver::isOpened (  )  [inline]

Definition at line 174 of file driver.h.

bool driver_base::Driver::isRunning (  )  [inline]

Definition at line 169 of file driver.h.

bool driver_base::Driver::isStopped (  )  [inline]

Definition at line 184 of file driver.h.

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

Definition at line 111 of file driver.h.

bool driver_base::Driver::open (  )  [inline]

Definition at line 159 of file driver.h.

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

Definition at line 88 of file driver.h.

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

Definition at line 62 of file driver.h.

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

Definition at line 242 of file driver.h.

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

Definition at line 251 of file driver.h.

bool driver_base::Driver::start (  )  [inline]

Definition at line 154 of file driver.h.

bool driver_base::Driver::stop (  )  [inline]

Definition at line 149 of file driver.h.

bool driver_base::Driver::tryTransition ( state_t  target,
void(Driver::*)()  transition 
) [inline, private]

Todo:
print the exception message better.

Definition at line 283 of file driver.h.


Member Data Documentation

Todo:
should this be protected?

Definition at line 71 of file driver.h.

boost::recursive_mutex driver_base::Driver::mutex_

Definition at line 69 of file driver.h.

Definition at line 72 of file driver.h.

Definition at line 53 of file driver.h.

Definition at line 73 of file driver.h.

Definition at line 45 of file driver.h.

std::string driver_base::Driver::status_message_ [private]

Definition at line 56 of file driver.h.

Definition at line 57 of file driver.h.

Definition at line 58 of file driver.h.

Definition at line 59 of file driver.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerator


driver_base
Author(s): Blaise Gassend
autogenerated on Fri Jan 11 09:36:40 2013