Orocos Real-Time Toolkit
2.8.3
|
The base class of each OutputPort. More...
#include <rtt/base/OutputPortInterface.hpp>
Public Member Functions | |
virtual bool | addConnection (internal::ConnID *port_id, ChannelElementBase::shared_ptr channel_input, ConnPolicy const &policy) |
Adds a new connection to this output port and initializes the connection if required by policy. More... | |
OutputPortInterface (std::string const &name) | |
virtual | ~OutputPortInterface () |
virtual bool | keepsLastWrittenValue () const =0 |
Returns true if this port records the last written value. More... | |
virtual void | keepLastWrittenValue (bool new_flag)=0 |
Change the setting for keeping the last written value. More... | |
virtual DataSourceBase::shared_ptr | getDataSource () const =0 |
Returns a Data source that stores the last written value, or a null pointer if this port does not keep its last written value. More... | |
virtual void | disconnect () |
Removes any connection that either go to or come from this port. More... | |
virtual bool | connected () const |
Returns true if there is at least one channel registered in this port's list of outputs. More... | |
virtual void | write (DataSourceBase::shared_ptr source) |
Write this port using the value stored in source. More... | |
bool | createDataConnection (InputPortInterface &sink, int lock_policy=ConnPolicy::LOCK_FREE) |
Connects this write port to the given read port, using a single-data policy with the given locking mechanism. More... | |
bool | createBufferConnection (InputPortInterface &sink, int size, int lock_policy=ConnPolicy::LOCK_FREE) |
Connects this write port to the given read port, using a buffered policy, with the buffer of the given size and the given locking mechanism. More... | |
bool | createConnection (InputPortInterface &sink) |
Connects this write port to the given read port, using as policy the default policy of the sink port. More... | |
virtual bool | createConnection (InputPortInterface &sink, ConnPolicy const &policy)=0 |
Connects this write port to the given read port, using the given connection policy. More... | |
virtual bool | disconnect (PortInterface *port) |
Removes the channel that connects this port to port . More... | |
virtual bool | removeConnection (internal::ConnID *cid) |
Removes the connection associated with this channel, and the channel as well. More... | |
virtual bool | connectTo (PortInterface *other, ConnPolicy const &policy) |
Connects this port with other, using the given policy. More... | |
virtual bool | connectTo (PortInterface *other) |
Connects this port with other, using the default policy of the input. More... | |
virtual const internal::ConnectionManager * | getManager () const |
Returns the connection manager of this port (if any). More... | |
virtual internal::ConnID * | getPortID () const |
Returns the identity of this port in a ConnID object. More... | |
const std::string & | getName () const |
Get the name of this Port. More... | |
bool | setName (const std::string &name) |
Change the name of this unconnected Port. More... | |
const std::string & | getDescription () const |
Get the documentation of this port. More... | |
PortInterface & | doc (const std::string &desc) |
Set the documentation of this port. More... | |
virtual const types::TypeInfo * | getTypeInfo () const =0 |
Returns the types::TypeInfo object for the port's type. More... | |
virtual bool | isLocal () const |
Returns true if this port is located on this process, and false otherwise. More... | |
virtual int | serverProtocol () const |
Returns the protocol over which this port can be accessed. More... | |
virtual PortInterface * | clone () const =0 |
Create a local clone of this port with the same name. More... | |
virtual PortInterface * | antiClone () const =0 |
Create a local clone of this port with the same name. More... | |
virtual Service * | createPortObject () |
Create accessor Object for this Port, for addition to a TaskContext Object interface. More... | |
virtual bool | createStream (ConnPolicy const &policy)=0 |
Creates a data stream from or to this port using connection-less transports. More... | |
void | setInterface (DataFlowInterface *iface) |
Once a port is added to a DataFlowInterface, it gets a pointer to that interface. More... | |
DataFlowInterface * | getInterface () const |
Returns the DataFlowInterface this port belongs to or null if it was not added to such an interface. More... | |
Protected Member Functions | |
virtual bool | connectionAdded (ChannelElementBase::shared_ptr channel_input, ConnPolicy const &policy)=0 |
Upcall to OutputPort. More... | |
OutputPortInterface (OutputPortInterface const &orig) | |
Protected Attributes | |
internal::ConnectionManager | cmanager |
DataFlowInterface * | iface |
The base class of each OutputPort.
It contains the connection management code, which is independent of the actual data being transmitted.
Definition at line 53 of file OutputPortInterface.hpp.
|
protected |
OutputPortInterface::OutputPortInterface | ( | std::string const & | name | ) |
Definition at line 50 of file OutputPortInterface.cpp.
|
virtual |
Definition at line 53 of file OutputPortInterface.cpp.
References cmanager, and RTT::internal::ConnectionManager::disconnect().
|
virtual |
Adds a new connection to this output port and initializes the connection if required by policy.
Use with care. Allows you to add any arbitrary connection to this output port. It is your responsibility to do any further bookkeeping, such as informing the input that a new output has been added.
Implements RTT::base::PortInterface.
Reimplemented in RTT::corba::RemotePort< base::OutputPortInterface >.
Definition at line 72 of file OutputPortInterface.cpp.
References RTT::internal::ConnectionManager::addConnection(), cmanager, and connectionAdded().
Referenced by RTT::internal::ConnFactory::createAndCheckConnection(), RTT::internal::ConnFactory::createAndCheckStream(), and RTT::corba::CDataFlowInterface_i::deregisterChannel().
|
pure virtualinherited |
Create a local clone of this port with the same name.
If this port is a local port, this is an object of the inverse direction (read for write and write for read), and same name. If this object is a remote port, then it is a local port of the inverse direction and with the same name.
Implemented in RTT::OutputPort< T >, RTT::InputPort< T >, RTT::corba::RemoteInputPort, and RTT::corba::RemoteOutputPort.
|
pure virtualinherited |
Create a local clone of this port with the same name.
If this port is a local port, this is an object of the same type and same name. If this object is a remote port, then it is a local port of the same type and same name.
Implemented in RTT::OutputPort< T >, RTT::InputPort< T >, RTT::corba::RemoteInputPort, and RTT::corba::RemoteOutputPort.
|
virtual |
Returns true if there is at least one channel registered in this port's list of outputs.
Returns true if this port is connected.
Implements RTT::base::PortInterface.
Reimplemented in RTT::corba::RemotePort< base::OutputPortInterface >.
Definition at line 59 of file OutputPortInterface.cpp.
References cmanager, and RTT::internal::ConnectionManager::connected().
|
protectedpure virtual |
Upcall to OutputPort.
Implemented in RTT::corba::RemotePort< base::OutputPortInterface >.
Referenced by addConnection().
|
virtual |
Connects this port with other, using the given policy.
Unlike OutputPortInterface::createConnection, other can be the write port and this
the read port.
Implements RTT::base::PortInterface.
Definition at line 100 of file OutputPortInterface.cpp.
References createConnection().
|
virtual |
Connects this port with other, using the default policy of the input.
Unlike OutputPortInterface::createConnection, other can be the write port and this
the read port.
Implements RTT::base::PortInterface.
Definition at line 108 of file OutputPortInterface.cpp.
References createConnection().
bool OutputPortInterface::createBufferConnection | ( | InputPortInterface & | sink, |
int | size, | ||
int | lock_policy = ConnPolicy::LOCK_FREE |
||
) |
Connects this write port to the given read port, using a buffered policy, with the buffer of the given size and the given locking mechanism.
Definition at line 94 of file OutputPortInterface.cpp.
References RTT::ConnPolicy::buffer(), createConnection(), and RTT::base::InputPortInterface::getDefaultPolicy().
bool RTT::base::OutputPortInterface::createConnection | ( | InputPortInterface & | sink | ) |
Connects this write port to the given read port, using as policy the default policy of the sink port.
Referenced by RTT::OutputPort< T >::antiClone(), connectTo(), RTT::base::InputPortInterface::connectTo(), createBufferConnection(), createDataConnection(), and RTT::corba::CDataFlowInterface_i::deregisterChannel().
|
pure virtual |
Connects this write port to the given read port, using the given connection policy.
Implemented in RTT::OutputPort< T >, and RTT::corba::RemoteOutputPort.
bool OutputPortInterface::createDataConnection | ( | InputPortInterface & | sink, |
int | lock_policy = ConnPolicy::LOCK_FREE |
||
) |
Connects this write port to the given read port, using a single-data policy with the given locking mechanism.
Definition at line 91 of file OutputPortInterface.cpp.
References createConnection(), and RTT::ConnPolicy::data().
|
virtualinherited |
Create accessor Object for this Port, for addition to a TaskContext Object interface.
Reimplemented in RTT::OutputPort< T >, and RTT::InputPort< T >.
Definition at line 75 of file PortInterface.cpp.
References RTT::Service::addSynchronousOperation(), RTT::base::PortInterface::connected(), RTT::base::PortInterface::disconnect(), RTT::base::PortInterface::getName(), RTT::DataFlowInterface::getOwner(), and RTT::base::PortInterface::iface.
Referenced by RTT::InputPort< T >::createPortObject(), RTT::DataFlowInterface::createPortObject(), and RTT::OutputPort< T >::createPortObject().
|
pure virtualinherited |
Creates a data stream from or to this port using connection-less transports.
Typically, policy.transport and policy.name_id must be properly filled in such that the data stream can be set up and input and output port can find each other. You need to call this method on two ports (input and output) using the same transport and (probably) same name_id.
policy | The connection policy describing how the stream must be set up. |
Implemented in RTT::OutputPort< T >, RTT::InputPort< T >, RTT::corba::RemotePort< base::InputPortInterface >, and RTT::corba::RemotePort< base::OutputPortInterface >.
Referenced by RTT::corba::CDataFlowInterface_i::deregisterChannel().
|
virtual |
Removes any connection that either go to or come from this port.
Implements RTT::base::PortInterface.
Reimplemented in RTT::corba::RemotePort< base::OutputPortInterface >.
Definition at line 67 of file OutputPortInterface.cpp.
References cmanager, and RTT::internal::ConnectionManager::disconnect().
Referenced by RTT::internal::ConnFactory::createAndCheckConnection().
|
virtual |
Removes the channel that connects this port to port
.
Implements RTT::base::PortInterface.
Reimplemented in RTT::corba::RemoteOutputPort.
Definition at line 62 of file OutputPortInterface.cpp.
References cmanager, and RTT::internal::ConnectionManager::disconnect().
|
inherited |
Set the documentation of this port.
desc | The description of the port |
Definition at line 60 of file PortInterface.cpp.
References RTT::base::PortInterface::iface, and RTT::DataFlowInterface::setPortDescription().
Referenced by RTT::InputPort< T >::createPortObject().
|
pure virtual |
Returns a Data source that stores the last written value, or a null pointer if this port does not keep its last written value.
Implemented in RTT::OutputPort< T >, and RTT::corba::RemoteOutputPort.
Referenced by RTT::internal::ConnFactory::createAndCheckOutOfBandConnection(), and RTT::internal::ConnFactory::createAndCheckStream().
|
inlineinherited |
Get the documentation of this port.
Definition at line 91 of file PortInterface.hpp.
|
inherited |
Returns the DataFlowInterface this port belongs to or null if it was not added to such an interface.
Definition at line 95 of file PortInterface.cpp.
References RTT::base::PortInterface::iface.
Referenced by RTT::corba::RemoteInputPort::buildRemoteChannelOutput(), RTT::corba::RemoteOutputPort::createConnection(), and RTT::mqueue::MQSendRecv::setupStream().
|
inlinevirtual |
Returns the connection manager of this port (if any).
This method provides access to the internals of this port in order to allow connection introspection.
Implements RTT::base::PortInterface.
Definition at line 142 of file OutputPortInterface.hpp.
|
inlineinherited |
Get the name of this Port.
Definition at line 77 of file PortInterface.hpp.
Referenced by RTT::DataFlowInterface::addEventPort(), RTT::DataFlowInterface::addLocalEventPort(), RTT::DataFlowInterface::addLocalPort(), RTT::DataFlowInterface::addPort(), RTT::corba::RemoteOutputPort::antiClone(), RTT::corba::RemoteInputPort::antiClone(), RTT::InputPort< T >::antiClone(), RTT::OutputPort< T >::antiClone(), RTT::corba::CorbaFallBackProtocol::buildChannelInput(), RTT::corba::CorbaFallBackProtocol::buildChannelOutput(), RTT::corba::RemoteInputPort::buildRemoteChannelOutput(), RTT::corba::RemoteInputPort::channelReady(), RTT::corba::RemoteOutputPort::clone(), RTT::corba::RemoteInputPort::clone(), RTT::InputPort< T >::clone(), RTT::OutputPort< T >::clone(), RTT::TaskContext::connectPorts(), RTT::base::InputPortInterface::connectTo(), RTT::internal::ConnFactory::createAndCheckConnection(), RTT::internal::ConnFactory::createAndCheckOutOfBandConnection(), RTT::internal::ConnFactory::createAndCheckStream(), RTT::corba::RemoteOutputPort::createConnection(), RTT::internal::ConnFactory::createConnection(), RTT::base::PortInterface::createPortObject(), RTT::internal::ConnFactory::createRemoteConnection(), RTT::corba::CorbaFallBackProtocol::createStream(), RTT::corba::CDataFlowInterface_i::deregisterChannel(), RTT::corba::RemoteOutputPort::disconnect(), and RTT::mqueue::MQSendRecv::setupStream().
|
virtualinherited |
Returns the identity of this port in a ConnID object.
Reimplemented in RTT::corba::RemotePort< base::InputPortInterface >, and RTT::corba::RemotePort< base::OutputPortInterface >.
Definition at line 72 of file PortInterface.cpp.
Referenced by RTT::internal::ConnFactory::createAndCheckConnection(), RTT::internal::ConnFactory::createConnection(), and RTT::internal::ConnectionManager::disconnect().
|
pure virtualinherited |
Returns the types::TypeInfo object for the port's type.
Implemented in RTT::OutputPort< T >, RTT::InputPort< T >, RTT::corba::RemotePort< base::InputPortInterface >, and RTT::corba::RemotePort< base::OutputPortInterface >.
Referenced by RTT::corba::CDataFlowInterface_i::_default_POA(), RTT::internal::ConnFactory::createAndCheckOutOfBandConnection(), RTT::internal::ConnFactory::createAndCheckStream(), RTT::internal::ConnFactory::createRemoteConnection(), and RTT::corba::CDataFlowInterface_i::deregisterChannel().
|
virtualinherited |
Returns true if this port is located on this process, and false otherwise.
Definition at line 67 of file PortInterface.cpp.
References RTT::base::PortInterface::serverProtocol().
Referenced by RTT::internal::ConnFactory::createAndCheckOutOfBandConnection(), and RTT::internal::ConnFactory::createConnection().
|
pure virtual |
Change the setting for keeping the last written value.
Setting this to false will clear up any unneeded storage. If set, this port can initialize new connections with a data sample and allows real-time data transport of dynamically sized objects over its newly created connections.
Implemented in RTT::OutputPort< T >, and RTT::corba::RemoteOutputPort.
|
pure virtual |
Returns true if this port records the last written value.
Implemented in RTT::OutputPort< T >, and RTT::corba::RemoteOutputPort.
|
virtual |
Removes the connection associated with this channel, and the channel as well.
Implements RTT::base::PortInterface.
Definition at line 82 of file OutputPortInterface.cpp.
References cmanager, and RTT::internal::ConnectionManager::removeConnection().
Referenced by RTT::internal::ConnInputEndpoint< T >::disconnect().
|
virtualinherited |
Returns the protocol over which this port can be accessed.
Reimplemented in RTT::corba::RemotePort< base::InputPortInterface >, and RTT::corba::RemotePort< base::OutputPortInterface >.
Definition at line 69 of file PortInterface.cpp.
Referenced by RTT::internal::ConnFactory::createRemoteConnection(), and RTT::base::PortInterface::isLocal().
|
inherited |
Once a port is added to a DataFlowInterface, it gets a pointer to that interface.
This allows advanced ports to track back to which component they belong.
Definition at line 91 of file PortInterface.cpp.
References RTT::base::PortInterface::iface.
Referenced by RTT::DataFlowInterface::addLocalPort(), and RTT::corba::CDataFlowInterface_i::deregisterChannel().
|
inherited |
Change the name of this unconnected Port.
One can only change the name when it is not yet connected.
true | if !this->connected(), the name has changed. |
false | if this->connected(), the name has not been changed. |
Definition at line 51 of file PortInterface.cpp.
References RTT::base::PortInterface::connected().
Referenced by RTT::DataFlowInterface::addEventPort(), RTT::TaskContext::addEventPort(), RTT::DataFlowInterface::addPort(), and RTT::TaskContext::addPort().
|
virtual |
Write this port using the value stored in source.
Reimplemented in RTT::OutputPort< T >.
Definition at line 88 of file OutputPortInterface.cpp.
|
protected |
Definition at line 56 of file OutputPortInterface.hpp.
Referenced by addConnection(), connected(), disconnect(), removeConnection(), RTT::OutputPort< T >::setDataSample(), RTT::OutputPort< T >::write(), and ~OutputPortInterface().
|
protectedinherited |
Definition at line 62 of file PortInterface.hpp.
Referenced by RTT::base::PortInterface::createPortObject(), RTT::base::PortInterface::doc(), RTT::base::PortInterface::getInterface(), and RTT::base::PortInterface::setInterface().