Orocos Real-Time Toolkit  2.9.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RTT::base::OutputPortInterface Class Referenceabstract

The base class of each OutputPort. More...

#include <rtt/base/OutputPortInterface.hpp>

Inheritance diagram for RTT::base::OutputPortInterface:
RTT::base::PortInterface RTT::corba::RemotePort< base::OutputPortInterface > RTT::OutputPort< T > RTT::corba::RemoteOutputPort

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 WriteStatus 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 createConnection (internal::SharedConnectionBase::shared_ptr shared_connection, ConnPolicy const &policy=ConnPolicy())
 Connects the port to an existing shared connection instance. More...
 
virtual bool disconnect (PortInterface *port)
 Removes the channel that connects this port to port. 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 internal::ConnIDgetPortID () 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...
 
PortInterfacedoc (const std::string &desc)
 Set the documentation of this port. More...
 
virtual bool connectedTo (PortInterface *port)
 Returns true if this port is connected to the given port. More...
 
virtual const types::TypeInfogetTypeInfo () 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 PortInterfaceclone () const =0
 Create a local clone of this port with the same name. More...
 
virtual PortInterfaceantiClone () const =0
 Create a local clone of this port with the same name. More...
 
virtual ServicecreatePortObject ()
 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...
 
virtual bool removeConnection (internal::ConnID *cid)
 Removes a user created connection from this port. More...
 
void setInterface (DataFlowInterface *iface)
 Once a port is added to a DataFlowInterface, it gets a pointer to that interface. More...
 
DataFlowInterfacegetInterface () const
 Returns the DataFlowInterface this port belongs to or null if it was not added to such an interface. More...
 
virtual internal::ConnectionManagergetManager ()
 Returns the connection manager of this port (if any). More...
 
virtual ChannelElementBasegetEndpoint () const =0
 Returns the input or output endpoint of this port (if any). More...
 
virtual internal::SharedConnectionBase::shared_ptr getSharedConnection () const
 Returns a pointer to the shared connection element this port may be connected to. 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

DataFlowInterfaceiface
 
internal::ConnectionManager cmanager
 

Detailed Description

The base class of each OutputPort.

It contains the connection management code, which is independent of the actual data being transmitted.

Definition at line 52 of file OutputPortInterface.hpp.

Constructor & Destructor Documentation

RTT::base::OutputPortInterface::OutputPortInterface ( OutputPortInterface const &  orig)
protected
OutputPortInterface::OutputPortInterface ( std::string const &  name)

Definition at line 51 of file OutputPortInterface.cpp.

OutputPortInterface::~OutputPortInterface ( )
virtual

Member Function Documentation

bool OutputPortInterface::addConnection ( internal::ConnID port_id,
ChannelElementBase::shared_ptr  channel_input,
ConnPolicy const &  policy 
)
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 73 of file OutputPortInterface.cpp.

References RTT::internal::ConnectionManager::addConnection(), RTT::base::PortInterface::cmanager, and connectionAdded().

Referenced by RTT::internal::ConnFactory::createAndCheckConnection(), RTT::internal::ConnFactory::createAndCheckSharedConnection(), RTT::internal::ConnFactory::createAndCheckStream(), and RTT::corba::CDataFlowInterface_i::deregisterChannel().

virtual PortInterface* RTT::base::PortInterface::antiClone ( ) const
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.

virtual PortInterface* RTT::base::PortInterface::clone ( ) const
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.

bool OutputPortInterface::connected ( ) const
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 60 of file OutputPortInterface.cpp.

References RTT::base::PortInterface::cmanager, and RTT::internal::ConnectionManager::connected().

Referenced by RTT::OutputPort< T >::setDataSample(), and RTT::OutputPort< T >::write().

bool PortInterface::connectedTo ( PortInterface port)
virtualinherited

Returns true if this port is connected to the given port.

Definition at line 67 of file PortInterface.cpp.

References RTT::base::PortInterface::cmanager, and RTT::internal::ConnectionManager::connectedTo().

Referenced by RTT::internal::ConnFactory::createConnection().

virtual bool RTT::base::OutputPortInterface::connectionAdded ( ChannelElementBase::shared_ptr  channel_input,
ConnPolicy const &  policy 
)
protectedpure virtual
bool OutputPortInterface::connectTo ( PortInterface other,
ConnPolicy const &  policy 
)
virtual

Connects this port with other, using the given policy.

Unlike OutputPortInterface::createConnection, other can be the write port and this the read port.

Returns
true on success, false on failure

Implements RTT::base::PortInterface.

Definition at line 98 of file OutputPortInterface.cpp.

References createConnection().

bool OutputPortInterface::connectTo ( PortInterface other)
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.

Returns
true on success, false on failure

Implements RTT::base::PortInterface.

Definition at line 106 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 87 of file OutputPortInterface.cpp.

References RTT::ConnPolicy::buffer(), RTT::internal::ConnFactory::createAndCheckSharedConnection(), 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(), RTT::base::InputPortInterface::connectTo(), connectTo(), createBufferConnection(), createDataConnection(), and RTT::corba::CDataFlowInterface_i::deregisterChannel().

virtual bool RTT::base::OutputPortInterface::createConnection ( InputPortInterface sink,
ConnPolicy const &  policy 
)
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.

virtual bool RTT::base::OutputPortInterface::createConnection ( internal::SharedConnectionBase::shared_ptr  shared_connection,
ConnPolicy const &  policy = ConnPolicy() 
)
virtual

Connects the port to an existing shared connection instance.

Implements RTT::base::PortInterface.

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 84 of file OutputPortInterface.cpp.

References createConnection(), and RTT::ConnPolicy::data().

Service * PortInterface::createPortObject ( )
virtualinherited
virtual bool RTT::base::PortInterface::createStream ( ConnPolicy const &  policy)
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.

Parameters
policyThe 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().

void OutputPortInterface::disconnect ( )
virtual
bool OutputPortInterface::disconnect ( PortInterface port)
virtual

Removes the channel that connects this port to port.

Implements RTT::base::PortInterface.

Reimplemented in RTT::corba::RemoteOutputPort.

Definition at line 63 of file OutputPortInterface.cpp.

References RTT::base::PortInterface::cmanager, and RTT::internal::ConnectionManager::disconnect().

PortInterface & PortInterface::doc ( const std::string &  desc)
inherited

Set the documentation of this port.

Parameters
descThe description of the port
Returns
a reference to this object.

Definition at line 60 of file PortInterface.cpp.

References RTT::base::PortInterface::iface, and RTT::DataFlowInterface::setPortDescription().

Referenced by RTT::InputPort< T >::createPortObject(), and RTT::corba::TaskContextProxy::synchronizePorts().

virtual DataSourceBase::shared_ptr RTT::base::OutputPortInterface::getDataSource ( ) const
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::createAndCheckStream().

const std::string& RTT::base::PortInterface::getDescription ( ) const
inlineinherited

Get the documentation of this port.

Returns
A description.

Definition at line 93 of file PortInterface.hpp.

Referenced by RTT::corba::CDataFlowInterface_i::_default_POA().

virtual ChannelElementBase* RTT::base::PortInterface::getEndpoint ( ) const
pure virtualinherited

Returns the input or output endpoint of this port (if any).

This method provides access to the internals of this port in order to access connected channel objects directly.

Implemented in RTT::OutputPort< T >, RTT::InputPort< T >, RTT::corba::RemotePort< base::InputPortInterface >, and RTT::corba::RemotePort< base::OutputPortInterface >.

Referenced by RTT::internal::ConnFactory::createAndCheckConnection(), RTT::internal::ConnFactory::createAndCheckSharedConnection(), and RTT::internal::ConnectionManager::eraseConnection().

DataFlowInterface * PortInterface::getInterface ( ) const
inherited

Returns the DataFlowInterface this port belongs to or null if it was not added to such an interface.

Definition at line 104 of file PortInterface.cpp.

References RTT::base::PortInterface::iface.

Referenced by RTT::corba::RemoteInputPort::buildRemoteChannelOutput(), RTT::corba::RemoteOutputPort::createConnection(), and RTT::mqueue::MQSendRecv::setupStream().

virtual internal::ConnectionManager* RTT::base::PortInterface::getManager ( )
inlinevirtualinherited

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.

Returns
null if no such manager is available, or the manager otherwise.
See also
ConnectionManager::getChannels() for a list of all connections of this port.

Definition at line 222 of file PortInterface.hpp.

Referenced by RTT::internal::ConnInputEndpoint< T >::disconnect(), and RTT::internal::ConnOutputEndpoint< T >::disconnect().

const std::string& RTT::base::PortInterface::getName ( ) const
inlineinherited

Get the name of this Port.

Definition at line 79 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::internal::ConnFactory::buildChannelInput(), RTT::corba::CorbaFallBackProtocol::buildChannelOutput(), RTT::internal::ConnFactory::buildChannelOutput(), RTT::corba::RemoteInputPort::buildRemoteChannelOutput(), RTT::internal::ConnFactory::buildRemoteChannelOutput(), RTT::internal::ConnFactory::buildSharedConnection(), 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::createAndCheckSharedConnection(), RTT::internal::ConnFactory::createAndCheckStream(), RTT::corba::RemoteOutputPort::createConnection(), RTT::corba::RemoteInputPort::createConnection(), RTT::internal::ConnFactory::createConnection(), RTT::base::PortInterface::createPortObject(), RTT::corba::CorbaFallBackProtocol::createStream(), RTT::corba::CDataFlowInterface_i::deregisterChannel(), RTT::corba::RemoteOutputPort::disconnect(), RTT::internal::ConnectionManager::eraseConnection(), RTT::internal::ConnFactory::findSharedConnection(), RTT::OutputPort< T >::setDataSample(), RTT::mqueue::MQSendRecv::setupStream(), and RTT::OutputPort< T >::write().

ConnID * PortInterface::getPortID ( ) const
virtualinherited
internal::SharedConnectionBase::shared_ptr PortInterface::getSharedConnection ( ) const
virtualinherited

Returns a pointer to the shared connection element this port may be connected to.

Definition at line 109 of file PortInterface.cpp.

References RTT::base::PortInterface::cmanager, and RTT::internal::ConnectionManager::getSharedConnection().

Referenced by RTT::internal::ConnFactory::createAndCheckSharedConnection(), and RTT::internal::ConnFactory::findSharedConnection().

virtual const types::TypeInfo* RTT::base::PortInterface::getTypeInfo ( ) const
pure virtualinherited
bool PortInterface::isLocal ( ) const
virtualinherited
virtual void RTT::base::OutputPortInterface::keepLastWrittenValue ( bool  new_flag)
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.

See also
OutputPort::OutputPort.

Implemented in RTT::OutputPort< T >, and RTT::corba::RemoteOutputPort.

virtual bool RTT::base::OutputPortInterface::keepsLastWrittenValue ( ) const
pure virtual

Returns true if this port records the last written value.

Implemented in RTT::OutputPort< T >, and RTT::corba::RemoteOutputPort.

bool PortInterface::removeConnection ( internal::ConnID cid)
virtualinherited

Removes a user created connection from this port.

This is an advanced method, prefer to use disconnect() or a method from a subclass of PortInterface.

Definition at line 95 of file PortInterface.cpp.

References RTT::base::PortInterface::cmanager, and RTT::internal::ConnectionManager::removeConnection().

Referenced by RTT::corba::CDataFlowInterface_i::deregisterChannel().

int PortInterface::serverProtocol ( ) const
virtualinherited
void PortInterface::setInterface ( DataFlowInterface iface)
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 100 of file PortInterface.cpp.

References RTT::base::PortInterface::iface.

Referenced by RTT::DataFlowInterface::addLocalPort(), and RTT::corba::CDataFlowInterface_i::deregisterChannel().

bool PortInterface::setName ( const std::string &  name)
inherited

Change the name of this unconnected Port.

One can only change the name when it is not yet connected.

Return values
trueif !this->connected(), the name has changed.
falseif 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().

WriteStatus OutputPortInterface::write ( DataSourceBase::shared_ptr  source)
virtual

Write this port using the value stored in source.

Reimplemented in RTT::OutputPort< T >.

Definition at line 81 of file OutputPortInterface.cpp.

Member Data Documentation

internal::ConnectionManager RTT::base::PortInterface::cmanager
protectedinherited
DataFlowInterface* RTT::base::PortInterface::iface
protectedinherited

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