rad  3.0.0
Public Member Functions | Protected Member Functions | List of all members
rad::ThreadBaseActivity Class Referenceabstract

#include <activity.hpp>

Inheritance diagram for rad::ThreadBaseActivity:
scxml4cpp::Activity rad::PthreadActivity rad::ThreadActivity MyTestDoActivityPthread exmalserver::ActivityMoving MyTestDoActivity server::ActivityMoving

Public Member Functions

 ThreadBaseActivity (ThreadBaseActivity const &)=delete
 
void start (scxml4cpp::Context *c) override
 
void stop (scxml4cpp::Context *c) override
 
std::string GetName () const
 
int SetName (const std::string &name)
 
virtual pthread_t GetNativeHandle () const =0
 
bool IsStopRequested () const
 To be implemented by child classes. More...
 
virtual bool IsThreadJoined () const =0
 
 ThreadBaseActivity (ThreadBaseActivity const &)=delete
 
void start (scxml4cpp::Context *c) override
 
void stop (scxml4cpp::Context *c) override
 
std::string GetName () const
 
int SetName (const std::string &name)
 
virtual pthread_t GetNativeHandle () const =0
 
bool IsStopRequested () const
 To be implemented by child classes. More...
 
virtual bool IsThreadJoined () const =0
 
- Public Member Functions inherited from scxml4cpp::Activity
 Activity (const std::string &id)
 
virtual ~Activity ()
 
std::string getId () const
 
void setId (const std::string &id)
 
 Activity (const std::string &id)
 
virtual ~Activity ()
 
std::string getId () const
 
void setId (const std::string &id)
 
 Activity (const std::string &id)
 
virtual ~Activity ()
 
std::string getId () const
 
void setId (const std::string &id)
 

Protected Member Functions

virtual void StartThread ()=0
 
virtual void JoinThread ()=0
 
virtual void StartThread ()=0
 
virtual void JoinThread ()=0
 

Detailed Description

Base class for different implementations of threaded activities.

It implements start(), stop() from scxml4cpp::Activity and provides IsStopRequested() which returns true if the activity implementation should stop and exit.

Implementations need to implement thread-specific methods:

This is a shared base for std::thread and pthread_t based threaded activities.

Note
that other perfectly valid options exist for interrupting the activity when it's time to stop. For example by using condition variables. This could be provided as a templated policy or a runtime provided implementation.

Constructor & Destructor Documentation

◆ ThreadBaseActivity() [1/2]

rad::ThreadBaseActivity::ThreadBaseActivity ( ThreadBaseActivity const &  )
delete

◆ ThreadBaseActivity() [2/2]

rad::ThreadBaseActivity::ThreadBaseActivity ( ThreadBaseActivity const &  )
delete

Member Function Documentation

◆ GetName() [1/2]

std::string rad::ThreadBaseActivity::GetName ( ) const
Returns
The name of the do-activity thread.

◆ GetName() [2/2]

std::string rad::ThreadBaseActivity::GetName ( ) const
Returns
The name of the do-activity thread.

◆ GetNativeHandle() [1/2]

virtual pthread_t rad::ThreadBaseActivity::GetNativeHandle ( ) const
pure virtual
Returns
Native thread handle.

Implemented in rad::PthreadActivity, rad::ThreadActivity, rad::PthreadActivity, and rad::ThreadActivity.

◆ GetNativeHandle() [2/2]

virtual pthread_t rad::ThreadBaseActivity::GetNativeHandle ( ) const
pure virtual
Returns
Native thread handle.

Implemented in rad::PthreadActivity, rad::ThreadActivity, rad::PthreadActivity, and rad::ThreadActivity.

◆ IsStopRequested() [1/2]

bool rad::ThreadBaseActivity::IsStopRequested ( ) const
inline

To be implemented by child classes.

◆ IsStopRequested() [2/2]

bool rad::ThreadBaseActivity::IsStopRequested ( ) const
inline

To be implemented by child classes.

◆ IsThreadJoined() [1/2]

virtual bool rad::ThreadBaseActivity::IsThreadJoined ( ) const
pure virtual

◆ IsThreadJoined() [2/2]

virtual bool rad::ThreadBaseActivity::IsThreadJoined ( ) const
pure virtual

◆ JoinThread() [1/2]

virtual void rad::ThreadBaseActivity::JoinThread ( )
protectedpure virtual

◆ JoinThread() [2/2]

virtual void rad::ThreadBaseActivity::JoinThread ( )
protectedpure virtual

◆ SetName() [1/2]

int rad::ThreadBaseActivity::SetName ( const std::string &  name)

Set thread name.

Parameters
[in]namefor the thread. Maximum length is 15 characters (excluding null terminator).
Returns
error code or 0 if successful.

◆ SetName() [2/2]

int rad::ThreadBaseActivity::SetName ( const std::string &  name)

Set thread name.

Parameters
[in]namefor the thread. Maximum length is 15 characters (excluding null terminator).
Returns
error code or 0 if successful.

◆ start() [1/2]

void rad::ThreadBaseActivity::start ( scxml4cpp::Context c)
overridevirtual
Note
Will stop() activity if it's running.

Implements scxml4cpp::Activity.

◆ start() [2/2]

void rad::ThreadBaseActivity::start ( scxml4cpp::Context c)
overridevirtual
Note
Will stop() activity if it's running.

Implements scxml4cpp::Activity.

◆ StartThread() [1/2]

virtual void rad::ThreadBaseActivity::StartThread ( )
protectedpure virtual

◆ StartThread() [2/2]

virtual void rad::ThreadBaseActivity::StartThread ( )
protectedpure virtual

◆ stop() [1/2]

void rad::ThreadBaseActivity::stop ( scxml4cpp::Context c)
overridevirtual

Stop activity. If activity is already completed it does nothing.

Implements scxml4cpp::Activity.

◆ stop() [2/2]

void rad::ThreadBaseActivity::stop ( scxml4cpp::Context c)
overridevirtual

Stop activity. If activity is already completed it does nothing.

Implements scxml4cpp::Activity.


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