Orocos Real-Time Toolkit
2.9.0
|
This class provides the basic tools to create channels that represent connections between two ports. More...
#include <rtt/internal/ConnFactory.hpp>
Public Member Functions | |
virtual | ~ConnFactory () |
virtual base::InputPortInterface * | inputPort (std::string const &name) const =0 |
Returns a new InputPort<T> object where T is the type represented by this TypeInfo object. More... | |
virtual base::OutputPortInterface * | outputPort (std::string const &name) const =0 |
Returns a new OutputPort<T> object where T is the type represented by this TypeInfo object. More... | |
virtual base::ChannelElementBase::shared_ptr | buildDataStorage (ConnPolicy const &policy) const =0 |
Creates single data or buffered storage for this type. More... | |
virtual base::ChannelElementBase::shared_ptr | buildChannelOutput (base::InputPortInterface &port, ConnPolicy const &policy) const =0 |
Creates the output endpoint of a communication channel and adds it to an InputPort. More... | |
virtual base::ChannelElementBase::shared_ptr | buildChannelInput (base::OutputPortInterface &port, ConnPolicy const &policy) const =0 |
Creates the input endpoint (starting point) of a communication channel and adds it to an OutputPort. More... | |
virtual internal::SharedConnectionBase::shared_ptr | buildSharedConnection (base::OutputPortInterface *output_port, base::InputPortInterface *input_port, ConnPolicy const &policy) const =0 |
Tries to find an existing or creates a new shared connection object for the given output port, input port and connection policy. More... | |
Static Public Member Functions | |
template<typename T > | |
static base::ChannelElement< T > * | buildDataStorage (ConnPolicy const &policy, const T &initial_value=T()) |
This method creates the connection element that will store data inside the connection, based on the given policy. More... | |
template<typename T > | |
static base::ChannelElementBase::shared_ptr | buildChannelInput (OutputPort< T > &port, ConnPolicy const &policy, bool force_unbuffered=false) |
During the process of building a connection between two ports, this method builds the input half (starting from the OutputPort). More... | |
template<typename T > | |
static base::ChannelElementBase::shared_ptr | buildChannelOutput (InputPort< T > &port, ConnPolicy const &policy, T const &initial_value=T()) |
During the process of building a connection between two ports, this method builds the output part of the channel, that is the half that is connected to the input port. More... | |
static bool | findSharedConnection (base::OutputPortInterface *output_port, base::InputPortInterface *input_port, ConnPolicy const &policy, SharedConnectionBase::shared_ptr &shared_connection) |
Tries to find an existing or creates a new shared connection object for the given output port, input port and connection policy. More... | |
template<typename T > | |
static SharedConnectionBase::shared_ptr | buildSharedConnection (OutputPort< T > *output_port, base::InputPortInterface *input_port, ConnPolicy const &policy) |
Tries to find an existing or creates a new shared connection object for the given output port, input port and connection policy. More... | |
template<typename T > | |
static bool | createConnection (OutputPort< T > &output_port, base::InputPortInterface &input_port, ConnPolicy const &policy) |
Creates a connection from a local output_port to a local or remote input_port. More... | |
template<class T > | |
static bool | createStream (OutputPort< T > &output_port, ConnPolicy const &policy) |
Creates, attaches and checks an outbound stream to an Output port. More... | |
template<class T > | |
static bool | createStream (InputPort< T > &input_port, ConnPolicy const &policy) |
Creates, attaches and checks an inbound stream to an Input port. More... | |
static bool | createAndCheckSharedConnection (base::OutputPortInterface *output_port, base::InputPortInterface *input_port, SharedConnectionBase::shared_ptr shared_connection, ConnPolicy const &policy) |
This class provides the basic tools to create channels that represent connections between two ports.
The ports and type transports use these functions to setup connections. The interface may change as the needs of these 'users' change.
Definition at line 94 of file ConnFactory.hpp.
|
inlinevirtual |
Definition at line 97 of file ConnFactory.hpp.
|
pure virtual |
Creates the input endpoint (starting point) of a communication channel and adds it to an OutputPort.
port | The output port to connect the channel's input end to. |
policy | Describes the kind of connection requested by the user |
Referenced by RTT::types::TemplateConnFactory< bool >::buildChannelInput().
|
inlinestatic |
During the process of building a connection between two ports, this method builds the input half (starting from the OutputPort).
The ConnPolicy may require to install a buffer at the output side of the channel.
port | The output port to which the connection is added. |
policy | The policy dictating which kind of buffer must be installed. The transport and other parameters are ignored. |
Definition at line 219 of file ConnFactory.hpp.
References RTT::ConnPolicy::buffer_policy, RTT::base::MultipleOutputsChannelElementBase::connected(), RTT::base::ChannelElementBase::connectTo(), RTT::Error, RTT::base::ChannelElementBase::getConnPolicy(), RTT::OutputPort< T >::getEndpoint(), RTT::OutputPort< T >::getLastWrittenValue(), RTT::base::PortInterface::getName(), RTT::OutputPort< T >::getSharedBuffer(), RTT::ConnPolicy::lock_policy, RTT::PerInputPort, RTT::PerOutputPort, RTT::ConnPolicy::PULL, RTT::ConnPolicy::pull, RTT::ConnPolicy::PUSH, RTT::ConnPolicy::size, and RTT::ConnPolicy::type.
|
pure virtual |
Creates the output endpoint of a communication channel and adds it to an InputPort.
port | The input port to connect the channel's output end to. |
policy | Describes the kind of connection requested by the user |
Referenced by RTT::types::TemplateConnFactory< bool >::buildChannelOutput().
|
inlinestatic |
During the process of building a connection between two ports, this method builds the output part of the channel, that is the half that is connected to the input port.
The returned value is the connection element that should be connected to the end of the input-half.
The ConnPolicy may require to install a buffer at the output side of the channel.
port | The input port to which the connection is added. |
policy | The policy dictating which kind of buffer must be installed. The transport and other parameters are ignored. |
initial_value | The value to use to initialize the connection's storage buffer. |
Definition at line 297 of file ConnFactory.hpp.
References RTT::ConnPolicy::buffer_policy, RTT::base::MultipleInputsChannelElementBase::connected(), RTT::base::ChannelElementBase::connectTo(), RTT::Error, RTT::base::ChannelElementBase::getConnPolicy(), RTT::InputPort< T >::getEndpoint(), RTT::base::PortInterface::getName(), RTT::InputPort< T >::getSharedBuffer(), RTT::ConnPolicy::lock_policy, RTT::PerInputPort, RTT::PerOutputPort, RTT::ConnPolicy::PULL, RTT::ConnPolicy::pull, RTT::ConnPolicy::PUSH, RTT::ConnPolicy::size, and RTT::ConnPolicy::type.
|
pure virtual |
Creates single data or buffered storage for this type.
policy | Describes the kind of storage requested by the user |
|
inlinestatic |
This method creates the connection element that will store data inside the connection, based on the given policy.
Contra: needs T in typelib.
Definition at line 157 of file ConnFactory.hpp.
References RTT::ConnPolicy::BUFFER, RTT::ConnPolicy::CIRCULAR_BUFFER, RTT::ConnPolicy::DATA, RTT::ConnPolicy::LOCK_FREE, RTT::ConnPolicy::lock_policy, RTT::ConnPolicy::LOCKED, RTT::ConnPolicy::size, RTT::ConnPolicy::type, RTT::ConnPolicy::UNSYNC, and RTT::Warning.
|
staticprotected |
|
pure virtual |
Tries to find an existing or creates a new shared connection object for the given output port, input port and connection policy.
If an existing shared connection has been found, also checks if it matches the given policy and output an error otherwise. The input and output port arguments are optional and can be NULL pointers.
output_port | The output port to connect the channel's input end to (optional). |
input_port | The output port to connect the channel's output end to (optional). |
policy | Describes the kind of storage requested by the user |
Referenced by RTT::types::TemplateConnFactory< bool >::buildSharedConnection().
|
inlinestatic |
Tries to find an existing or creates a new shared connection object for the given output port, input port and connection policy.
If an existing shared connection has been found, also checks if it matches the given policy and output an error otherwise. The input and output port arguments are optional and can be NULL pointers.
output_port | The output port to connect the channel's input end to (optional). |
input_port | The output port to connect the channel's output end to (optional). |
policy | Describes the kind of storage requested by the user |
Definition at line 384 of file ConnFactory.hpp.
References RTT::base::ChannelElementBase::connectTo(), RTT::base::InputPortInterface::createConnection(), RTT::Error, RTT::OutputPort< T >::getLastWrittenValue(), RTT::base::PortInterface::getName(), RTT::base::PortInterface::isLocal(), and RTT::ConnPolicy::mandatory.
|
staticprotected |
Definition at line 100 of file ConnFactory.cpp.
References RTT::base::OutputPortInterface::addConnection(), RTT::Debug, RTT::base::OutputPortInterface::disconnect(), RTT::Error, RTT::base::PortInterface::getEndpoint(), RTT::base::PortInterface::getName(), RTT::base::PortInterface::getPortID(), and RTT::ConnPolicy::mandatory.
|
static |
Definition at line 214 of file ConnFactory.cpp.
References RTT::base::OutputPortInterface::addConnection(), RTT::base::InputPortInterface::addConnection(), RTT::ConnPolicy::buffer_policy, RTT::base::ChannelElementBase::connectTo(), RTT::Error, RTT::base::PortInterface::getEndpoint(), RTT::base::PortInterface::getName(), RTT::base::PortInterface::getSharedConnection(), RTT::base::PortInterface::isLocal(), RTT::ConnPolicy::lock_policy, RTT::ConnPolicy::mandatory, RTT::ConnPolicy::name_id, RTT::Shared, RTT::ConnPolicy::size, and RTT::ConnPolicy::type.
Referenced by RTT::base::OutputPortInterface::createBufferConnection(), and RTT::base::InputPortInterface::createConnection().
|
staticprotected |
Definition at line 139 of file ConnFactory.cpp.
References RTT::base::OutputPortInterface::addConnection(), RTT::types::TypeTransporter::createStream(), RTT::ConnPolicy::data_size, RTT::Debug, RTT::Error, RTT::base::OutputPortInterface::getDataSource(), RTT::base::PortInterface::getName(), RTT::types::TypeInfo::getProtocol(), RTT::types::TypeMarshaller::getSampleSize(), RTT::base::PortInterface::getTypeInfo(), RTT::types::TypeInfo::getTypeName(), RTT::Info, RTT::ConnPolicy::mandatory, RTT::internal::StreamConnID::name_id, RTT::ConnPolicy::name_id, and RTT::ConnPolicy::transport.
|
staticprotected |
Definition at line 178 of file ConnFactory.cpp.
References RTT::types::TypeTransporter::createStream(), RTT::Error, RTT::base::PortInterface::getName(), RTT::types::TypeInfo::getProtocol(), RTT::base::PortInterface::getTypeInfo(), RTT::types::TypeInfo::getTypeName(), RTT::Info, RTT::ConnPolicy::mandatory, RTT::internal::StreamConnID::name_id, RTT::ConnPolicy::name_id, and RTT::ConnPolicy::transport.
|
inlinestatic |
Creates a connection from a local output_port to a local or remote input_port.
This function contains all logic to decide on how connections must be created to local or remote input ports.
In order to set up out-of-band communication between input_port and output_port, use a different transport number in the policy parameter than the transport of the input port.
Definition at line 450 of file ConnFactory.hpp.
References RTT::ConnPolicy::buffer_policy, RTT::base::PortInterface::connectedTo(), RTT::Error, RTT::OutputPort< T >::getLastWrittenValue(), RTT::base::PortInterface::getName(), RTT::Info, RTT::base::PortInterface::isLocal(), RTT::Shared, and RTT::ConnPolicy::transport.
Referenced by RTT::OutputPort< T >::createConnection().
|
inlinestaticprotected |
This code is for setting up an in-process out-of-band connection.
This means that both input and output port are present in the same process. This function is used when the policy dictates a transport protocol, but both ports are local.
Definition at line 568 of file ConnFactory.hpp.
References RTT::OutputPort< T >::getLastWrittenValue(), and RTT::ConnPolicy::name_id.
|
inlinestatic |
Creates, attaches and checks an outbound stream to an Output port.
output_port | The port to connect the stream to. |
policy | The policy dictating which transport to use. |
Definition at line 524 of file ConnFactory.hpp.
References RTT::ConnPolicy::name_id.
Referenced by RTT::InputPort< T >::createStream(), and RTT::OutputPort< T >::createStream().
|
inlinestatic |
Creates, attaches and checks an inbound stream to an Input port.
input_port | The port to connect the stream to. |
policy | The policy dictating which transport to use. |
Definition at line 541 of file ConnFactory.hpp.
References RTT::ConnPolicy::name_id.
|
static |
Tries to find an existing or creates a new shared connection object for the given output port, input port and connection policy.
If an existing shared connection has been found, also checks if it matches the given policy and output an error otherwise. The input and output port arguments are optional and can be NULL pointers.
output_port | The output port to connect the channel's input end to (optional). |
input_port | The output port to connect the channel's output end to (optional). |
policy | Describes the kind of storage requested by the user |
shared_connection | A reference to a SharedConnectionBase pointer that will point to the found instance or an empty pointer, if either no connection has been found or the found connection was invalid for the given ports and policy. |
Definition at line 262 of file ConnFactory.cpp.
References RTT::Error, RTT::base::PortInterface::getName(), RTT::base::PortInterface::getSharedConnection(), RTT::Info, and RTT::ConnPolicy::name_id.
Referenced by RTT::corba::CDataFlowInterface_i::deregisterChannel().
|
pure virtual |
Returns a new InputPort<T> object where T is the type represented by this TypeInfo object.
|
pure virtual |
Returns a new OutputPort<T> object where T is the type represented by this TypeInfo object.