An Asynchronous Event Processor, which catches events and executes the asynchronous callbacks in its RunnableInterface::step(). More...
#include <rtt/EventProcessor.hpp>
Public Types | |
enum | AsynStorageType { OnlyFirst, OnlyLast } |
For Asynchronous callbacks, this enum defines how the arguments are stored in case of an overrun, ie, when the event is fired multiple times, before the asynchronous callback can be called. More... | |
Public Member Functions | |
EventProcessor () | |
Create a periodic EventProcessor. | |
bool | initialize () |
The method that will be called before the first periodical execution of step() ( or non periodical execution of loop() ), when the thread is started. | |
void | step () |
The method that will be periodically executed when this class RTT_API is run in a periodic thread. | |
void | finalize () |
The method that will be called after the last periodical execution of step() ( or non periodical execution of loop() ), when the RunnableInterface is stopped. | |
bool | breakLoop () |
Force the loop() method to return. | |
bool | hasWork () |
This method is for 'intelligent' activity implementations that wish to see if it is required to call step() (again). | |
template<class SignalType > | |
Handle | connect (const typename SignalType::SlotFunction &f, SignalType &sig, AsynStorageType t) |
Connect a function to an Event and process upon each event the function in this event processor. | |
template<class SignalType > | |
Handle | setup (const typename SignalType::SlotFunction &f, SignalType &sig, AsynStorageType t) |
Setup the processing of an asynchronous event. | |
ActivityInterface * | getActivity () const |
Query for the task this interface is run in. | |
virtual void | setActivity (ActivityInterface *task) |
Set the task this interface is run in. | |
virtual OS::ThreadInterface * | getThread () const |
Get the thread this object is run in. | |
virtual void | loop () |
The method that will be executed once when this class RTT_API is run in a non periodic thread. | |
virtual void | setThread (ThreadInterface *t) |
Set the thread this object will be run in. | |
Protected Types | |
typedef List < detail::EventCatcher * > | ECList |
The EC is released when the connection it is used in is deleted *and* it is removed from this vector. | |
Protected Member Functions | |
void | destroyed (detail::EventCatcher *ec) |
Protected Attributes | |
ECList | catchers |
OS::AtomicInt | has_work |
Friends | |
struct | EventCatcher |
struct | detail::EventCatcher |
An Asynchronous Event Processor, which catches events and executes the asynchronous callbacks in its RunnableInterface::step().
This class is mostly used internally by Orocos, but users can use it to process asynchronous callbacks in their own implementation. The EventProcessor is an argument in the Event's asynchronous connect method.
The default policy of the EventProcessor is to process all asynchronous callbacks in step(). In order to change the processing of the asynchronous events, subclass this class and override step() or other virtual functions. The BlockingEventProcessor is an example of an EventProcessor with a different policy, and can be subclassed in turn.
Definition at line 508 of file EventProcessor.hpp.
For Asynchronous callbacks, this enum defines how the arguments are stored in case of an overrun, ie, when the event is fired multiple times, before the asynchronous callback can be called.
OnlyLast |
< Only call the callback once with the first fire() call's arguments < Only call the callback once with the last fire() call's arguments |
Definition at line 533 of file EventProcessor.hpp.
Handle RTT::EventProcessor::connect | ( | const typename SignalType::SlotFunction & | f, | |
SignalType & | sig, | |||
AsynStorageType | t | |||
) | [inline] |
Connect a function to an Event and process upon each event the function in this event processor.
The returned handle holds the connection between f and sig.
f | will be called within this EventProcessor when sig is emitted. | |
sig | The Event to which f will react. | |
t | specifies the policy in case of over-runs. That is, when sig is emitted multiple times before f could be called. |
Definition at line 569 of file EventProcessor.hpp.
References RTT::Handle::connect().
Referenced by RTT::Event< void() >::connect().
ActivityInterface * RTT::RunnableInterface::getActivity | ( | ) | const [inline, inherited] |
Query for the task this interface is run in.
Zero denotes that no task is present to run it, and hence no detailed information is available.
Definition at line 106 of file RunnableInterface.hpp.
virtual OS::ThreadInterface* RTT::RunnableInterface::getThread | ( | ) | const [virtual, inherited] |
Get the thread this object is run in.
Reimplemented from RTT::OS::RunnableInterface.
bool RTT::EventProcessor::hasWork | ( | ) | [virtual] |
This method is for 'intelligent' activity implementations that wish to see if it is required to call step() (again).
By default, false is returned. You should only return true in case there is a temporary reason to (re-)run step.
Reimplemented from RTT::RunnableInterface.
virtual void RTT::OS::RunnableInterface::loop | ( | ) | [virtual, inherited] |
The method that will be executed once when this class RTT_API is run in a non periodic thread.
The default implementation calls step() once.
Reimplemented in RTT::Timer.
virtual void RTT::RunnableInterface::setActivity | ( | ActivityInterface * | task | ) | [virtual, inherited] |
Set the task this interface is run in.
A Zero means no task is running it.
task | The ActivityInterface running this interface. |
Reimplemented in RTT::ExecutionEngine.
Handle RTT::EventProcessor::setup | ( | const typename SignalType::SlotFunction & | f, | |
SignalType & | sig, | |||
AsynStorageType | t | |||
) | [inline] |
Setup the processing of an asynchronous event.
The returned handle does not yet connect f and sig. Use Handle::connect().
f | will be called within this EventProcessor when sig is emitted. | |
sig | The Event to which f will react. | |
t | specifies the policy in case of over-runs. That is, when sig is emitted multiple times before f could be called. |
Definition at line 587 of file EventProcessor.hpp.
Referenced by RTT::Event< void() >::setup().