#include <DataFlowInterface.hpp>
Public Types | |
typedef std::vector< std::string > | PortNames |
typedef std::vector< base::PortInterface * > | Ports |
typedef boost::function< void(base::PortInterface *)> | SlotFunction |
Protected Member Functions | |
bool | chkPtr (const std::string &where, const std::string &name, const void *ptr) |
Service * | createPortObject (const std::string &name) |
Protected Attributes | |
Ports | mports |
Service * | mservice |
The Interface of a TaskContext which exposes its data-flow ports.
Definition at line 59 of file DataFlowInterface.hpp.
typedef std::vector<std::string> RTT::DataFlowInterface::PortNames |
A sequence of names of ports.
Definition at line 70 of file DataFlowInterface.hpp.
typedef std::vector<base::PortInterface*> RTT::DataFlowInterface::Ports |
A sequence of pointers to ports.
Definition at line 65 of file DataFlowInterface.hpp.
typedef boost::function<void(base::PortInterface*)> RTT::DataFlowInterface::SlotFunction |
Definition at line 72 of file DataFlowInterface.hpp.
RTT::DataFlowInterface::DataFlowInterface | ( | Service * | parent = 0 | ) |
Construct the DataFlow interface of a Service.
parent | If not null, a Service will be added to parent for each port added to this interface. |
Definition at line 48 of file DataFlowInterface.cpp.
RTT::DataFlowInterface::~DataFlowInterface | ( | ) |
Definition at line 52 of file DataFlowInterface.cpp.
|
inline |
Name and add an Event triggering Port to the interface of this task and add a Service with the same name of the port.
name | The name to give to the port. |
port | The port to add. |
callback | (Optional) provide a function which will be called when new data arrives on this port. The callback function will be called instead of updateHook(). Use this->trigger() in your callback function in order to schedule an updateHook() nevertheless in the same cycle. If callback is not provided, updateHook() will be executed by default. |
Definition at line 117 of file DataFlowInterface.hpp.
InputPortInterface & RTT::DataFlowInterface::addEventPort | ( | base::InputPortInterface & | port, |
SlotFunction | callback = SlotFunction() |
||
) |
Add an Event triggering Port to the interface of this task and add a Service with the same name of the port. When data arrives on this port your TaskContext will be woken up and updateHook() will be executed by default.
port | The port to add. |
callback | (Optional) provide a function which will be called when new data arrives on this port. The callback function will be called instead of updateHook(). Use this->trigger() in your callback function in order to schedule an updateHook() nevertheless in the same cycle. If callback is not provided, updateHook() will be executed by default. |
Definition at line 97 of file DataFlowInterface.cpp.
InputPortInterface & RTT::DataFlowInterface::addLocalEventPort | ( | base::InputPortInterface & | port, |
SlotFunction | callback = SlotFunction() |
||
) |
Add an Event triggering Port to this task without registering a service for it. When data arrives on this port your TaskContext will be woken up and updateHook will be executed.
port | The port to add. |
callback | (Optional) provide a function which will be called when new data arrives on this port. The callback function will be called in sequence with updateHook(), so asynchronously with regard to the arrival of data on the port. |
Definition at line 135 of file DataFlowInterface.cpp.
PortInterface & RTT::DataFlowInterface::addLocalPort | ( | base::PortInterface & | port | ) |
Add a Port to this task without registering a service for it. If a port with the same name already exists, addPort will replace it with port and log a warning.
Definition at line 82 of file DataFlowInterface.cpp.
|
inline |
Name and add a Port to the interface of this task and add a Service with the same name of the port.
name | The name to give to the port. |
port | The port to add. |
Definition at line 89 of file DataFlowInterface.hpp.
PortInterface & RTT::DataFlowInterface::addPort | ( | base::PortInterface & | port | ) |
Add a Port to the interface of this task and add a Service with the same name of the port. If a port or service with the name already exists, addPort will replace them with port and log a warning.
port | The port to add. |
Definition at line 59 of file DataFlowInterface.cpp.
|
protected |
Definition at line 265 of file DataFlowInterface.cpp.
void RTT::DataFlowInterface::clear | ( | ) |
Remove all added ports from this interface and all associated TaskObjects.
Definition at line 253 of file DataFlowInterface.cpp.
|
protected |
Create a Service through which one can access a Port.
name | The port name |
Definition at line 238 of file DataFlowInterface.cpp.
void RTT::DataFlowInterface::dataOnPort | ( | base::PortInterface * | port | ) |
Used by the input ports to notify this class of new data.
Definition at line 128 of file DataFlowInterface.cpp.
TaskContext * RTT::DataFlowInterface::getOwner | ( | ) | const |
Returns the component this interface belongs to.
Definition at line 55 of file DataFlowInterface.cpp.
PortInterface * RTT::DataFlowInterface::getPort | ( | const std::string & | name | ) | const |
Get an added port.
name | The port name |
Definition at line 211 of file DataFlowInterface.cpp.
std::string RTT::DataFlowInterface::getPortDescription | ( | const std::string & | name | ) | const |
Get the description of an added Port.
name | The port name |
Definition at line 220 of file DataFlowInterface.cpp.
DataFlowInterface::PortNames RTT::DataFlowInterface::getPortNames | ( | ) | const |
Get all port names of this interface.
Definition at line 202 of file DataFlowInterface.cpp.
DataFlowInterface::Ports RTT::DataFlowInterface::getPorts | ( | ) | const |
Get all ports of this interface.
Definition at line 198 of file DataFlowInterface.cpp.
|
inline |
Get a port of a specific type.
Definition at line 244 of file DataFlowInterface.hpp.
|
inline |
Returns the service this interface belongs to. The returned service is a service living in the component returned by getOwner() or in one of its sub-services.
Definition at line 203 of file DataFlowInterface.hpp.
void RTT::DataFlowInterface::removeLocalPort | ( | const std::string & | name | ) |
Remove a locally added Port from this interface. This will remove all connections and callbacks assosiated with this port.
port | The port to remove. |
Definition at line 186 of file DataFlowInterface.cpp.
void RTT::DataFlowInterface::removePort | ( | const std::string & | name | ) |
Remove a Port from this interface. This will remove all services, connections and callbacks assosiated with this port.
port | The port to remove. |
Definition at line 165 of file DataFlowInterface.cpp.
bool RTT::DataFlowInterface::setPortDescription | ( | const std::string & | name, |
const std::string | description | ||
) |
Sets the description for the service of an added port. It's prefered to use getPort(name)->doc(description) instead of this method, since this function only updates the documentation of the service representing this port, and not the documentation stored in the port.
name | The port name |
description | The new description for this port's service |
Definition at line 229 of file DataFlowInterface.cpp.
|
protected |
All our ports.
Definition at line 280 of file DataFlowInterface.hpp.
|
protected |
The parent Service. May be null in exceptional cases.
Definition at line 284 of file DataFlowInterface.hpp.