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

The base class of every data flow port. More...

#include <rtt/base/PortInterface.hpp>

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

Public Member Functions

virtual ~PortInterface ()
 
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 connected () const =0
 Returns true if this port is connected. More...
 
virtual const types::TypeInfogetTypeInfo () const =0
 Returns the types::TypeInfo object for the port's type. More...
 
virtual void disconnect ()=0
 Removes any connection that either go to or come from this port. More...
 
virtual bool disconnect (PortInterface *port)=0
 Removes the connection that links this port and the given port. 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 connectTo (PortInterface *other, ConnPolicy const &policy)=0
 Connects this port with other, using the given policy. More...
 
virtual bool connectTo (PortInterface *other)=0
 Connects this port with other, using the default policy of the input. More...
 
virtual bool createStream (ConnPolicy const &policy)=0
 Creates a data stream from or to this port using connection-less transports. More...
 
virtual bool addConnection (internal::ConnID *cid, ChannelElementBase::shared_ptr channel_input, ConnPolicy const &policy=ConnPolicy())=0
 Adds a user created connection to this port. More...
 
virtual bool removeConnection (internal::ConnID *cid)=0
 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 const internal::ConnectionManagergetManager () const =0
 Returns the connection manager of this port (if any). More...
 

Protected Member Functions

 PortInterface (const std::string &name)
 

Protected Attributes

DataFlowInterfaceiface
 

Detailed Description

The base class of every data flow port.

Definition at line 57 of file PortInterface.hpp.

Constructor & Destructor Documentation

PortInterface::PortInterface ( const std::string &  name)
protected

Definition at line 48 of file PortInterface.cpp.

virtual RTT::base::PortInterface::~PortInterface ( )
inlinevirtual

Definition at line 67 of file PortInterface.hpp.

Member Function Documentation

virtual bool RTT::base::PortInterface::addConnection ( internal::ConnID cid,
ChannelElementBase::shared_ptr  channel_input,
ConnPolicy const &  policy = ConnPolicy() 
)
pure virtual

Adds a user created connection to this port.

This is an advanced method, prefer to use connectTo and createStream.

Implemented in RTT::corba::RemoteInputPort, RTT::base::InputPortInterface, RTT::corba::RemotePort< base::InputPortInterface >, RTT::corba::RemotePort< base::OutputPortInterface >, and RTT::base::OutputPortInterface.

virtual PortInterface* RTT::base::PortInterface::antiClone ( ) const
pure virtual

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 virtual

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 bool RTT::base::PortInterface::connected ( ) const
pure virtual
virtual bool RTT::base::PortInterface::connectTo ( PortInterface other,
ConnPolicy const &  policy 
)
pure 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

Implemented in RTT::base::InputPortInterface, and RTT::base::OutputPortInterface.

virtual bool RTT::base::PortInterface::connectTo ( PortInterface other)
pure 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

Implemented in RTT::base::InputPortInterface, and RTT::base::OutputPortInterface.

Service * PortInterface::createPortObject ( )
virtual
virtual bool RTT::base::PortInterface::createStream ( ConnPolicy const &  policy)
pure virtual

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

virtual void RTT::base::PortInterface::disconnect ( )
pure virtual
virtual bool RTT::base::PortInterface::disconnect ( PortInterface port)
pure virtual

Removes the connection that links this port and the given port.

Returns true if there was such a connection, false otherwise

Implemented in RTT::corba::RemoteInputPort, RTT::base::OutputPortInterface, RTT::base::InputPortInterface, and RTT::corba::RemoteOutputPort.

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

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 iface, and RTT::DataFlowInterface::setPortDescription().

Referenced by RTT::InputPort< T >::createPortObject().

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

Get the documentation of this port.

Returns
A description.

Definition at line 91 of file PortInterface.hpp.

DataFlowInterface * PortInterface::getInterface ( ) const

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 iface.

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

virtual const internal::ConnectionManager* RTT::base::PortInterface::getManager ( ) const
pure virtual

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.

Implemented in RTT::base::InputPortInterface, and RTT::base::OutputPortInterface.

const std::string& RTT::base::PortInterface::getName ( ) const
inline
ConnID * PortInterface::getPortID ( ) const
virtual
virtual const types::TypeInfo* RTT::base::PortInterface::getTypeInfo ( ) const
pure virtual
bool PortInterface::isLocal ( ) const
virtual

Returns true if this port is located on this process, and false otherwise.

Definition at line 67 of file PortInterface.cpp.

References serverProtocol().

Referenced by RTT::internal::ConnFactory::createAndCheckOutOfBandConnection(), and RTT::internal::ConnFactory::createConnection().

virtual bool RTT::base::PortInterface::removeConnection ( internal::ConnID cid)
pure virtual

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.

Implemented in RTT::base::OutputPortInterface, and RTT::base::InputPortInterface.

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

int PortInterface::serverProtocol ( ) const
virtual

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 isLocal().

void PortInterface::setInterface ( DataFlowInterface iface)

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 iface.

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

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

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 connected().

Referenced by RTT::DataFlowInterface::addEventPort(), RTT::TaskContext::addEventPort(), RTT::DataFlowInterface::addPort(), and RTT::TaskContext::addPort().

Member Data Documentation

DataFlowInterface* RTT::base::PortInterface::iface
protected

Definition at line 62 of file PortInterface.hpp.

Referenced by createPortObject(), doc(), getInterface(), and setInterface().


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