YARP
Yet Another Robot Platform
ForwardingCarrier Class Reference
+ Inheritance diagram for ForwardingCarrier:

Public Member Functions

 ForwardingCarrier ()
 
 ForwardingCarrier (SharedLibraryClassFactory< Carrier > *factory, Carrier *owner)
 
 ~ForwardingCarrier () override
 
virtual CarriergetContent ()
 
virtual const CarriergetContent () const
 
Carriercreate () const override
 Factory method. More...
 
bool isValid () const override
 Check if this object is really a connection, or just an empty placeholder. More...
 
bool isTextMode () const override
 Check if carrier is textual in nature. More...
 
bool isBareMode () const override
 Check if carrier excludes type information from payload. More...
 
bool canEscape () const override
 Check if carrier can encode administrative messages, as opposed to just user data. More...
 
void handleEnvelope (const std::string &envelope) override
 Carriers that do not distinguish data from administrative headers (i.e. More...
 
bool requireAck () const override
 Check if carrier has flow control, requiring sent messages to be acknowledged by recipient. More...
 
bool supportReply () const override
 This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies. More...
 
bool isLocal () const override
 Check if carrier operates within a single process. More...
 
bool isPush () const override
 Check if carrier is "push" or "pull" style. More...
 
bool isConnectionless () const override
 Check if this carrier is connectionless (like udp, mcast) or connection based (like tcp). More...
 
bool isBroadcast () const override
 Check if this carrier uses a broadcast mechanism. More...
 
bool isActive () const override
 Check if carrier is alive and error free. More...
 
bool modifiesIncomingData () const override
 Check if this carrier modifies incoming data through the Carrier::modifyIncomingData method. More...
 
ConnectionReadermodifyIncomingData (ConnectionReader &reader) override
 Modify incoming payload data, if appropriate. More...
 
bool acceptIncomingData (ConnectionReader &reader) override
 Determine whether incoming data should be accepted. More...
 
bool modifiesOutgoingData () const override
 Check if this carrier modifies outgoing data through the Carrier::modifyOutgoingData method. More...
 
const PortWritermodifyOutgoingData (const PortWriter &writer) override
 Modify outgoing payload data, if appropriate. More...
 
bool acceptOutgoingData (const PortWriter &writer) override
 Determine whether outgoing data should be accepted. More...
 
bool modifiesReply () const override
 Check if this carrier modifies outgoing data through the Carrier::modifyReply method. More...
 
PortReadermodifyReply (PortReader &reader) override
 Modify reply payload data, if appropriate. More...
 
void setCarrierParams (const Property &params) override
 Configure carrier from port administrative commands. More...
 
void getCarrierParams (Property &params) const override
 Get carrier configuration and deliver it by port administrative commands. More...
 
void getHeader (yarp::os::Bytes &header) const override
 Provide 8 bytes describing this connection sufficiently to allow the other side of a connection to select it. More...
 
void prepareDisconnect () override
 Do cleanup and preparation for the coming disconnect, if necessary. More...
 
std::string getName () const override
 Get the name of this connection type ("tcp", "mcast", "shmem", ...) More...
 
bool checkHeader (const yarp::os::Bytes &header) override
 Given the first 8 bytes received on a connection, decide if this is the right carrier type to use for the rest of the connection. More...
 
void setParameters (const yarp::os::Bytes &header) override
 Configure this carrier based on the first 8 bytes of the connection. More...
 
bool canAccept () const override
 Check if reading is implemented for this carrier. More...
 
bool canOffer () const override
 Check if writing is implemented for this carrier. More...
 
bool prepareSend (ConnectionState &proto) override
 Perform any initialization needed before writing on a connection. More...
 
bool sendHeader (ConnectionState &proto) override
 Write a header appropriate to the carrier to the connection, followed by any carrier-specific data. More...
 
bool expectReplyToHeader (ConnectionState &proto) override
 Process reply to header, if one is expected for this carrier. More...
 
bool write (ConnectionState &proto, SizedWriter &writer) override
 Write a message. More...
 
bool reply (ConnectionState &proto, SizedWriter &writer) override
 
bool expectExtraHeader (ConnectionState &proto) override
 Receive any carrier-specific header. More...
 
bool respondToHeader (ConnectionState &proto) override
 Respond to the header. More...
 
bool expectIndex (ConnectionState &proto) override
 Expect a message header, if there is one for this carrier. More...
 
bool expectSenderSpecifier (ConnectionState &proto) override
 Expect the name of the sending port. More...
 
bool sendAck (ConnectionState &proto) override
 Send an acknowledgement, if needed for this carrier. More...
 
bool expectAck (ConnectionState &proto) override
 Receive an acknowledgement, if expected for this carrier. More...
 
std::string toString () const override
 Get name of carrier. More...
 
void close () override
 Close the carrier. More...
 
std::string getBootstrapCarrierName () const override
 Get the name of the carrier that should be used prior to handshaking, if a port is registered with this carrier as its default carrier. More...
 
int connect (const yarp::os::Contact &src, const yarp::os::Contact &dest, const yarp::os::ContactStyle &style, int mode, bool reversed) override
 Some carrier types may require special connection logic. More...
 
bool configure (ConnectionState &proto) override
 Give carrier a shot at looking at how the connection is set up. More...
 
bool configureFromProperty (yarp::os::Property &options) override
 
yarp::os::FacecreateFace () const override
 Create new Face object that the carrier needs. More...
 
- Public Member Functions inherited from yarp::os::Carrier
virtual ~Carrier ()
 Destructor. More...
 
- Public Member Functions inherited from yarp::os::Connection
virtual ~Connection ()
 Destructor. More...
 

Public Attributes

SharedLibraryClassFactory< Carrier > * factory
 
SharedLibraryClass< Carriercar
 
Carrierowner
 

Detailed Description

Definition at line 1563 of file Network.cpp.

Constructor & Destructor Documentation

◆ ForwardingCarrier() [1/2]

ForwardingCarrier::ForwardingCarrier ( )
inline

Definition at line 1570 of file Network.cpp.

◆ ForwardingCarrier() [2/2]

ForwardingCarrier::ForwardingCarrier ( SharedLibraryClassFactory< Carrier > *  factory,
Carrier owner 
)
inline

Definition at line 1576 of file Network.cpp.

◆ ~ForwardingCarrier()

ForwardingCarrier::~ForwardingCarrier ( )
inlineoverride

Definition at line 1585 of file Network.cpp.

Member Function Documentation

◆ acceptIncomingData()

bool ForwardingCarrier::acceptIncomingData ( ConnectionReader reader)
inlineoverridevirtual

Determine whether incoming data should be accepted.

Parameters
readerfor incoming data.
Returns
true if data should be accepted, false if it should be discarded.

Reimplemented from yarp::os::Carrier.

Definition at line 1686 of file Network.cpp.

◆ acceptOutgoingData()

bool ForwardingCarrier::acceptOutgoingData ( const PortWriter writer)
inlineoverridevirtual

Determine whether outgoing data should be accepted.

Parameters
writerfor outgoing data.
Returns
true if data should be accepted, false if it should be discarded.

Reimplemented from yarp::os::Carrier.

Definition at line 1701 of file Network.cpp.

◆ canAccept()

bool ForwardingCarrier::canAccept ( ) const
inlineoverridevirtual

Check if reading is implemented for this carrier.

Returns
true if carrier can read messages

Implements yarp::os::Carrier.

Definition at line 1754 of file Network.cpp.

◆ canEscape()

bool ForwardingCarrier::canEscape ( ) const
inlineoverridevirtual

Check if carrier can encode administrative messages, as opposed to just user data.

The word escape is used in the sense of escape character or escape sequence here.

Returns
true if carrier can encode administrative messages

Implements yarp::os::Carrier.

Definition at line 1631 of file Network.cpp.

◆ canOffer()

bool ForwardingCarrier::canOffer ( ) const
inlineoverridevirtual

Check if writing is implemented for this carrier.

Returns
true if carrier can write messages

Implements yarp::os::Carrier.

Definition at line 1759 of file Network.cpp.

◆ checkHeader()

bool ForwardingCarrier::checkHeader ( const yarp::os::Bytes header)
inlineoverridevirtual

Given the first 8 bytes received on a connection, decide if this is the right carrier type to use for the rest of the connection.

For example the "text" carrier looks for the 8-byte sequence "CONNECT ". See the YARP protocol documentation for all the sequences in use here. In general you are free to add your own.

Parameters
headera buffer holding the first 8 bytes received on the connection
Returns
true if this is the carrier to use.

Implements yarp::os::Carrier.

Definition at line 1744 of file Network.cpp.

◆ close()

void ForwardingCarrier::close ( )
inlineoverridevirtual

Close the carrier.

Reimplemented from yarp::os::Carrier.

Definition at line 1824 of file Network.cpp.

◆ configure()

bool ForwardingCarrier::configure ( ConnectionState proto)
inlineoverridevirtual

Give carrier a shot at looking at how the connection is set up.

Returns
true if the carrier was correctly configured.

Reimplemented from yarp::os::Carrier.

Definition at line 1843 of file Network.cpp.

◆ configureFromProperty()

bool ForwardingCarrier::configureFromProperty ( yarp::os::Property options)
inlineoverridevirtual

Reimplemented from yarp::os::Carrier.

Definition at line 1847 of file Network.cpp.

◆ connect()

int ForwardingCarrier::connect ( const yarp::os::Contact src,
const yarp::os::Contact dest,
const yarp::os::ContactStyle style,
int  mode,
bool  reversed 
)
inlineoverridevirtual

Some carrier types may require special connection logic.

This can be implemented here. Normally this is not necessary.

Parameters
srcInitiator of the connection.
destDestination of the connection.
styleOptions for connection.
modeYARP_ENACT_CONNECT / YARP_ENACT_DISCONNECT / YARP_ENACT_EXISTS.
reversedtrue for pull connections, false for push connections.
Returns
-1 if no attempt made to connect, 0 on success, 1 on failure.

Reimplemented from yarp::os::Carrier.

Definition at line 1834 of file Network.cpp.

◆ create()

Carrier* ForwardingCarrier::create ( ) const
inlineoverridevirtual

Factory method.

Get a new object of the same type as this one.

Returns
a new object of the same type as this one.

Implements yarp::os::Carrier.

Reimplemented in StubCarrier.

Definition at line 1608 of file Network.cpp.

◆ createFace()

yarp::os::Face* ForwardingCarrier::createFace ( ) const
inlineoverridevirtual

Create new Face object that the carrier needs.

Reimplemented from yarp::os::Carrier.

Definition at line 1852 of file Network.cpp.

◆ expectAck()

bool ForwardingCarrier::expectAck ( ConnectionState proto)
inlineoverridevirtual

Receive an acknowledgement, if expected for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1814 of file Network.cpp.

◆ expectExtraHeader()

bool ForwardingCarrier::expectExtraHeader ( ConnectionState proto)
inlineoverridevirtual

Receive any carrier-specific header.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1789 of file Network.cpp.

◆ expectIndex()

bool ForwardingCarrier::expectIndex ( ConnectionState proto)
inlineoverridevirtual

Expect a message header, if there is one for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1799 of file Network.cpp.

◆ expectReplyToHeader()

bool ForwardingCarrier::expectReplyToHeader ( ConnectionState proto)
inlineoverridevirtual

Process reply to header, if one is expected for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1774 of file Network.cpp.

◆ expectSenderSpecifier()

bool ForwardingCarrier::expectSenderSpecifier ( ConnectionState proto)
inlineoverridevirtual

Expect the name of the sending port.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1804 of file Network.cpp.

◆ getBootstrapCarrierName()

std::string ForwardingCarrier::getBootstrapCarrierName ( ) const
inlineoverridevirtual

Get the name of the carrier that should be used prior to handshaking, if a port is registered with this carrier as its default carrier.

Normally, this should be "tcp".

For carriers intended to interoperate with foreign ports not capable of initiating streams, the bootstrap carrier name should be left blank. YARP may use that fact to arrange for alternate methods of initiating a stream.

Returns
the name of the bootstrap carrier.

Reimplemented from yarp::os::Carrier.

Definition at line 1829 of file Network.cpp.

◆ getCarrierParams()

void ForwardingCarrier::getCarrierParams ( Property params) const
inlineoverridevirtual

Get carrier configuration and deliver it by port administrative commands.

Parameters
paramsproperties

Reimplemented from yarp::os::Carrier.

Definition at line 1721 of file Network.cpp.

◆ getContent() [1/2]

virtual Carrier& ForwardingCarrier::getContent ( )
inlinevirtual

Reimplemented in StubCarrier.

Definition at line 1598 of file Network.cpp.

◆ getContent() [2/2]

virtual const Carrier& ForwardingCarrier::getContent ( ) const
inlinevirtual

Reimplemented in StubCarrier.

Definition at line 1603 of file Network.cpp.

◆ getHeader()

void ForwardingCarrier::getHeader ( yarp::os::Bytes header) const
inlineoverridevirtual

Provide 8 bytes describing this connection sufficiently to allow the other side of a connection to select it.

Parameters
headera buffer to hold the first 8 bytes to send on a connection

Implements yarp::os::Carrier.

Definition at line 1726 of file Network.cpp.

◆ getName()

std::string ForwardingCarrier::getName ( ) const
inlineoverridevirtual

Get the name of this connection type ("tcp", "mcast", "shmem", ...)

Returns
the name of this connection type

Implements yarp::os::Connection.

Definition at line 1736 of file Network.cpp.

◆ handleEnvelope()

void ForwardingCarrier::handleEnvelope ( const std::string &  envelope)
inlineoverridevirtual

Carriers that do not distinguish data from administrative headers (i.e.

canEscape returns false), can overload this method to handle the envelope inside the stream. On the receiving side, the InputStream will have to overload the yarp::os::InputStream::setReadEnvelopeCallback method, and execute the callback as soon as the envelope is ready.

Parameters
envelopethe envelope to transmit bundled with data.

Reimplemented from yarp::os::Carrier.

Definition at line 1636 of file Network.cpp.

◆ isActive()

bool ForwardingCarrier::isActive ( ) const
inlineoverridevirtual

Check if carrier is alive and error free.

Returns
true if carrier is active.

Implements yarp::os::Carrier.

Definition at line 1671 of file Network.cpp.

◆ isBareMode()

bool ForwardingCarrier::isBareMode ( ) const
inlineoverridevirtual

Check if carrier excludes type information from payload.

Returns
true if carrier is bare

Reimplemented from yarp::os::Connection.

Definition at line 1626 of file Network.cpp.

◆ isBroadcast()

bool ForwardingCarrier::isBroadcast ( ) const
inlineoverridevirtual

Check if this carrier uses a broadcast mechanism.

This flag is used to determine whether it is appropriate to send "kill" messages using a carrier or whether they should be sent "out-of-band"

Returns
true if carrier uses a broadcast mechanism.

Reimplemented from yarp::os::Carrier.

Definition at line 1666 of file Network.cpp.

◆ isConnectionless()

bool ForwardingCarrier::isConnectionless ( ) const
inlineoverridevirtual

Check if this carrier is connectionless (like udp, mcast) or connection based (like tcp).

This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies. Replies are not supported by YARP on connectionless carriers.

Returns
true if carrier is connectionless

Implements yarp::os::Carrier.

Definition at line 1661 of file Network.cpp.

◆ isLocal()

bool ForwardingCarrier::isLocal ( ) const
inlineoverridevirtual

Check if carrier operates within a single process.

In such a case, YARP connections may get completely reorganized in order to optimize them.

Returns
true if carrier will only operate within a single process

Implements yarp::os::Carrier.

Definition at line 1651 of file Network.cpp.

◆ isPush()

bool ForwardingCarrier::isPush ( ) const
inlineoverridevirtual

Check if carrier is "push" or "pull" style.

Push means that the side that initiates a connection is also the one that will sending of data or commands. All native YARP connections are like this. A "pull" style is equivalent to automatically sending a "reverse connection" port command at the start of the connection.

Returns
true if carrier is "push" style, false if "pull" style

Reimplemented from yarp::os::Carrier.

Definition at line 1656 of file Network.cpp.

◆ isTextMode()

bool ForwardingCarrier::isTextMode ( ) const
inlineoverridevirtual

Check if carrier is textual in nature.

Returns
true if carrier is text-based

Implements yarp::os::Carrier.

Definition at line 1621 of file Network.cpp.

◆ isValid()

bool ForwardingCarrier::isValid ( ) const
inlineoverridevirtual

Check if this object is really a connection, or just an empty placeholder.

Returns
true if a valid connection

Reimplemented from yarp::os::Connection.

Definition at line 1616 of file Network.cpp.

◆ modifiesIncomingData()

bool ForwardingCarrier::modifiesIncomingData ( ) const
inlineoverridevirtual

Check if this carrier modifies incoming data through the Carrier::modifyIncomingData method.

Returns
true if carrier wants Carrier::modifyIncomingData called.

Reimplemented from yarp::os::Carrier.

Definition at line 1676 of file Network.cpp.

◆ modifiesOutgoingData()

bool ForwardingCarrier::modifiesOutgoingData ( ) const
inlineoverridevirtual

Check if this carrier modifies outgoing data through the Carrier::modifyOutgoingData method.

Returns
true if carrier wants Carrier::modifyOutgoingData called.

Reimplemented from yarp::os::Carrier.

Definition at line 1691 of file Network.cpp.

◆ modifiesReply()

bool ForwardingCarrier::modifiesReply ( ) const
inlineoverridevirtual

Check if this carrier modifies outgoing data through the Carrier::modifyReply method.

Returns
true if carrier wants Carrier::modifyReply called.

Reimplemented from yarp::os::Carrier.

Definition at line 1706 of file Network.cpp.

◆ modifyIncomingData()

ConnectionReader& ForwardingCarrier::modifyIncomingData ( ConnectionReader reader)
inlineoverridevirtual

Modify incoming payload data, if appropriate.

Doesn't need to be done immediately, it is fine to hold onto a reference to the incoming data reader and use it on demand. This can be handy in order to avoid unnecessary copies.

Parameters
readerfor incoming data.
Returns
reader for modified version of incoming data.
Note
If the ConnectionReader returned is not the same as the one in input, the setParentConnectionReader(&reader) should be called for the new one, or the envelope will not be handled correctly.

Reimplemented from yarp::os::Carrier.

Definition at line 1681 of file Network.cpp.

◆ modifyOutgoingData()

const PortWriter& ForwardingCarrier::modifyOutgoingData ( const PortWriter writer)
inlineoverridevirtual

Modify outgoing payload data, if appropriate.

Doesn't need to be done immediately, it is fine to hold onto a reference to the outgoing data reader and use it on demand. This can be handy in order to avoid unnecessary copies.

Parameters
writerfor outgoing data.
Returns
writer for modified version of outgoing data.

Reimplemented from yarp::os::Carrier.

Definition at line 1696 of file Network.cpp.

◆ modifyReply()

PortReader& ForwardingCarrier::modifyReply ( PortReader reader)
inlineoverridevirtual

Modify reply payload data, if appropriate.

Parameters
readerfor the replied message.
Returns
reader for modified version of the replied message.

Reimplemented from yarp::os::Carrier.

Definition at line 1711 of file Network.cpp.

◆ prepareDisconnect()

void ForwardingCarrier::prepareDisconnect ( )
inlineoverridevirtual

Do cleanup and preparation for the coming disconnect, if necessary.

Reimplemented from yarp::os::Carrier.

Definition at line 1731 of file Network.cpp.

◆ prepareSend()

bool ForwardingCarrier::prepareSend ( ConnectionState proto)
inlineoverridevirtual

Perform any initialization needed before writing on a connection.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1764 of file Network.cpp.

◆ reply()

bool ForwardingCarrier::reply ( ConnectionState proto,
SizedWriter writer 
)
inlineoverridevirtual

Reimplemented from yarp::os::Carrier.

Definition at line 1784 of file Network.cpp.

◆ requireAck()

bool ForwardingCarrier::requireAck ( ) const
inlineoverridevirtual

Check if carrier has flow control, requiring sent messages to be acknowledged by recipient.

Returns
true if carrier requires acknowledgement.

Implements yarp::os::Carrier.

Definition at line 1641 of file Network.cpp.

◆ respondToHeader()

bool ForwardingCarrier::respondToHeader ( ConnectionState proto)
inlineoverridevirtual

Respond to the header.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1794 of file Network.cpp.

◆ sendAck()

bool ForwardingCarrier::sendAck ( ConnectionState proto)
inlineoverridevirtual

Send an acknowledgement, if needed for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1809 of file Network.cpp.

◆ sendHeader()

bool ForwardingCarrier::sendHeader ( ConnectionState proto)
inlineoverridevirtual

Write a header appropriate to the carrier to the connection, followed by any carrier-specific data.

Must communicate at least the name of the originating port, if there is one.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1769 of file Network.cpp.

◆ setCarrierParams()

void ForwardingCarrier::setCarrierParams ( const Property params)
inlineoverridevirtual

Configure carrier from port administrative commands.

Parameters
paramsproperties

Reimplemented from yarp::os::Carrier.

Definition at line 1716 of file Network.cpp.

◆ setParameters()

void ForwardingCarrier::setParameters ( const yarp::os::Bytes header)
inlineoverridevirtual

Configure this carrier based on the first 8 bytes of the connection.

This will only be called if checkHeader passed.

Parameters
headera buffer holding the first 8 bytes received on the connection

Implements yarp::os::Carrier.

Definition at line 1749 of file Network.cpp.

◆ supportReply()

bool ForwardingCarrier::supportReply ( ) const
inlineoverridevirtual

This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies.

Returns
true if carrier supports replies

Implements yarp::os::Carrier.

Definition at line 1646 of file Network.cpp.

◆ toString()

std::string ForwardingCarrier::toString ( ) const
inlineoverridevirtual

Get name of carrier.

Returns
name of carrier.

Implements yarp::os::Carrier.

Definition at line 1819 of file Network.cpp.

◆ write()

bool ForwardingCarrier::write ( ConnectionState proto,
SizedWriter writer 
)
inlineoverridevirtual

Write a message.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 1779 of file Network.cpp.

Member Data Documentation

◆ car

SharedLibraryClass<Carrier> ForwardingCarrier::car

Definition at line 1567 of file Network.cpp.

◆ factory

SharedLibraryClassFactory<Carrier>* ForwardingCarrier::factory

Definition at line 1566 of file Network.cpp.

◆ owner

Carrier* ForwardingCarrier::owner

Definition at line 1568 of file Network.cpp.


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