|
Orocos Real-Time Toolkit
2.5.0
|
Manages connections between ports. More...
#include <rtt/internal/ConnectionManager.hpp>
Public Types | |
| typedef boost::tuple < boost::shared_ptr< ConnID > , base::ChannelElementBase::shared_ptr, ConnPolicy > | ChannelDescriptor |
| A Channel (= connection) is described by an opaque ConnID object, the first element of the channel and the policy of the channel. | |
Public Member Functions | |
| ConnectionManager (base::PortInterface *port) | |
| Creates a connection manager to manage the connections of port. | |
| void | addConnection (ConnID *port_id, base::ChannelElementBase::shared_ptr channel_input, ConnPolicy policy) |
| Helper method for port-to-port connection establishment. | |
| bool | removeConnection (ConnID *port_id) |
| void | disconnect () |
| Disconnect all connections. | |
| bool | connected () const |
| Returns true if there is at least one channel registered in this port's list of outputs. | |
| bool | disconnect (base::PortInterface *port) |
Removes the channel that connects this port to port. | |
| template<typename Pred > | |
| bool | delete_if (Pred pred) |
| template<typename Pred > | |
| void | select_reader_channel (Pred pred, bool copy_old_data) |
| Selects a connection as the current channel if pred(connection) is true. | |
| template<typename Pred > | |
| std::pair< bool, ChannelDescriptor > | find_if (Pred pred, bool copy_old_data) |
| bool | isSingleConnection () const |
| Returns true if this manager manages only one connection. | |
| base::ChannelElementBase * | getCurrentChannel () const |
| Returns the first added channel or if select_if was called, the selected channel. | |
| std::list< ChannelDescriptor > | getChannels () const |
| Returns a list of all channels managed by this object. | |
| void | clear () |
| Clears (removes) all data in the manager's connections. | |
Protected Member Functions | |
| void | updateCurrentChannel (bool reset_current) |
| bool | findMatchingPort (ConnID const *conn_id, ChannelDescriptor const &descriptor) |
| Helper method for disconnect(PortInterface*) | |
| bool | eraseConnection (ChannelDescriptor &descriptor) |
| Helper method for disconnect() | |
Protected Attributes | |
| os::Mutex | connection_resize_mtx |
| os::Mutex for when it is needed to resize the connections list | |
| base::PortInterface * | mport |
| The port for which we manage connections. | |
| std::list< ChannelDescriptor > | connections |
| A list of all our connections. | |
| ChannelDescriptor | cur_channel |
| Optimisation in case only one channel is to be managed. | |
| RTT::os::Mutex | connection_lock |
| Lock that should be taken before the list of connections is accessed or modified. | |
Manages connections between ports.
This class is used for input and output ports in order to manage their channels. TODO: use the mutex lock !!!
Definition at line 77 of file ConnectionManager.hpp.
| typedef boost::tuple<boost::shared_ptr<ConnID>, base::ChannelElementBase::shared_ptr, ConnPolicy> RTT::internal::ConnectionManager::ChannelDescriptor |
A Channel (= connection) is described by an opaque ConnID object, the first element of the channel and the policy of the channel.
The policy is only given for read-only access, modifying it will not have any effect on the connection.
Definition at line 86 of file ConnectionManager.hpp.
Creates a connection manager to manage the connections of port.
| port | The port whose connections to manage. |
Definition at line 61 of file ConnectionManager.cpp.
| void RTT::internal::ConnectionManager::addConnection | ( | ConnID * | port_id, |
| base::ChannelElementBase::shared_ptr | channel_input, | ||
| ConnPolicy | policy | ||
| ) |
Helper method for port-to-port connection establishment.
This is the last step in adding a connection to an output port and also validates if the connection is sound.
Definition at line 129 of file ConnectionManager.cpp.
References connection_lock, connections, and cur_channel.
Referenced by RTT::base::OutputPortInterface::addConnection(), and RTT::base::InputPortInterface::addConnection().
Clears (removes) all data in the manager's connections.
After this call, all channels will return NoData, until new data is written.
Definition at line 79 of file ConnectionManager.cpp.
References RTT::internal::clearChannel(), connection_lock, and connections.
Referenced by RTT::base::InputPortInterface::clear().
| bool RTT::internal::ConnectionManager::eraseConnection | ( | ConnectionManager::ChannelDescriptor & | descriptor | ) | [protected] |
Helper method for disconnect()
Unconditionally removes the given connection and return true
Definition at line 103 of file ConnectionManager.cpp.
References disconnect(), and mport.
Referenced by disconnect().
| bool RTT::internal::ConnectionManager::findMatchingPort | ( | ConnID const * | conn_id, |
| ChannelDescriptor const & | descriptor | ||
| ) | [protected] |
Helper method for disconnect(PortInterface*)
This method removes the channel listed in descriptor from the list of output channels if port has the same id that the one listed in descriptor.
Definition at line 84 of file ConnectionManager.cpp.
| base::ChannelElementBase* RTT::internal::ConnectionManager::getCurrentChannel | ( | ) | const [inline] |
Returns the first added channel or if select_if was called, the selected channel.
Definition at line 185 of file ConnectionManager.hpp.
| bool RTT::internal::ConnectionManager::isSingleConnection | ( | ) | const [inline] |
Returns true if this manager manages only one connection.
Definition at line 178 of file ConnectionManager.hpp.
| void RTT::internal::ConnectionManager::select_reader_channel | ( | Pred | pred, |
| bool | copy_old_data | ||
| ) | [inline] |
Selects a connection as the current channel if pred(connection) is true.
It will first check the current channel ( getCurrentChannel() ), if that does not satisfy pred, iterate over all connections. If none satisfy pred, the current channel remains unchanged.
| pred |
Definition at line 144 of file ConnectionManager.hpp.
Referenced by RTT::InputPort< T >::read().
std::list< ChannelDescriptor > RTT::internal::ConnectionManager::connections [protected] |
A list of all our connections.
Only non-null if two or more connections were added.
Definition at line 235 of file ConnectionManager.hpp.
Referenced by addConnection(), clear(), connected(), and disconnect().
1.7.6.1