YARP  2.3.70.1
Yet Another Robot Platform
yarp::os::AbstractCarrier Class Referenceabstract

A starter class for implementing simple carriers. More...

#include <yarp/os/AbstractCarrier.h>

+ Inheritance diagram for yarp::os::AbstractCarrier:

Public Member Functions

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

Protected Member Functions

int getSpecifier (const Bytes &b)
 
void createStandardHeader (int specifier, const yarp::os::Bytes &header)
 
virtual bool write (ConnectionState &proto, SizedWriter &writer) YARP_OVERRIDE
 Write a message. More...
 
bool sendConnectionStateSpecifier (ConnectionState &proto)
 
bool sendSenderSpecifier (ConnectionState &proto)
 

Static Protected Member Functions

static int interpretYarpNumber (const yarp::os::Bytes &b)
 
static void createYarpNumber (int x, const yarp::os::Bytes &header)
 

Detailed Description

A starter class for implementing simple carriers.

It implements reasonable default behavior.

Definition at line 24 of file AbstractCarrier.h.

Member Function Documentation

◆ canAccept()

bool AbstractCarrier::canAccept ( )
virtual

Check if reading is implemented for this carrier.

Returns
true if carrier can read messages

Implements yarp::os::Carrier.

Definition at line 31 of file AbstractCarrier.cpp.

◆ canEscape()

bool AbstractCarrier::canEscape ( )
virtual

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.

Reimplemented in yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, and yarp::os::MpiCarrier.

Definition at line 51 of file AbstractCarrier.cpp.

◆ canOffer()

bool AbstractCarrier::canOffer ( )
virtual

Check if writing is implemented for this carrier.

Returns
true if carrier can write messages

Implements yarp::os::Carrier.

Definition at line 36 of file AbstractCarrier.cpp.

◆ checkHeader()

virtual bool yarp::os::AbstractCarrier::checkHeader ( const yarp::os::Bytes header)
pure virtual

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.

Implemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, yarp::os::MpiCarrier, yarp::os::impl::ShmemCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, and yarp::os::ModifyingCarrier.

◆ create()

◆ createStandardHeader()

void AbstractCarrier::createStandardHeader ( int  specifier,
const yarp::os::Bytes header 
)
protected

Definition at line 167 of file AbstractCarrier.cpp.

◆ createYarpNumber()

static void yarp::os::AbstractCarrier::createYarpNumber ( int  x,
const yarp::os::Bytes header 
)
inlinestaticprotected

Definition at line 100 of file AbstractCarrier.h.

◆ defaultExpectAck()

bool AbstractCarrier::defaultExpectAck ( ConnectionState proto)

Definition at line 239 of file AbstractCarrier.cpp.

◆ defaultExpectIndex()

bool AbstractCarrier::defaultExpectIndex ( ConnectionState proto)

Definition at line 263 of file AbstractCarrier.cpp.

◆ defaultSendAck()

bool AbstractCarrier::defaultSendAck ( ConnectionState proto)

Definition at line 332 of file AbstractCarrier.cpp.

◆ defaultSendHeader()

bool AbstractCarrier::defaultSendHeader ( ConnectionState proto)

Definition at line 183 of file AbstractCarrier.cpp.

◆ defaultSendIndex()

bool AbstractCarrier::defaultSendIndex ( ConnectionState proto,
SizedWriter writer 
)

Definition at line 218 of file AbstractCarrier.cpp.

◆ expectAck()

bool AbstractCarrier::expectAck ( ConnectionState proto)
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::MpiCarrier, yarp::os::impl::NameserCarrier, and yarp::os::impl::TextCarrier.

Definition at line 138 of file AbstractCarrier.cpp.

◆ expectExtraHeader()

bool AbstractCarrier::expectExtraHeader ( ConnectionState proto)
virtual

Receive any carrier-specific header.

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

Implements yarp::os::Carrier.

Reimplemented in yarp::os::impl::LocalCarrier, and yarp::os::impl::McastCarrier.

Definition at line 89 of file AbstractCarrier.cpp.

◆ expectIndex()

bool AbstractCarrier::expectIndex ( ConnectionState proto)
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::MpiCarrier, yarp::os::impl::NameserCarrier, and yarp::os::impl::TextCarrier.

Definition at line 95 of file AbstractCarrier.cpp.

◆ expectReplyToHeader()

bool AbstractCarrier::expectReplyToHeader ( ConnectionState proto)
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, yarp::os::MpiBcastCarrier, yarp::os::MpiCarrier, yarp::os::impl::McastCarrier, yarp::os::impl::ShmemCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, and yarp::os::impl::TextCarrier.

Definition at line 78 of file AbstractCarrier.cpp.

◆ expectSenderSpecifier()

bool AbstractCarrier::expectSenderSpecifier ( ConnectionState proto)
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::NameserCarrier, yarp::os::MpiCarrier, and yarp::os::impl::TextCarrier.

Definition at line 100 of file AbstractCarrier.cpp.

◆ getCarrierParams()

void AbstractCarrier::getCarrierParams ( yarp::os::Property params)
virtual

Get carrier configuration and deliver it by port administrative commands.

Parameters
paramsproperties

Reimplemented from yarp::os::Carrier.

Reimplemented in yarp::os::PriorityCarrier, yarp::os::PortMonitor, and yarp::os::ModifyingCarrier.

Definition at line 153 of file AbstractCarrier.cpp.

◆ getHeader()

virtual void yarp::os::AbstractCarrier::getHeader ( const yarp::os::Bytes header)
pure virtual

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.

Implemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, yarp::os::MpiCarrier, yarp::os::impl::ShmemCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, and yarp::os::ModifyingCarrier.

◆ getName()

◆ getSpecifier()

int AbstractCarrier::getSpecifier ( const Bytes b)
protected

Definition at line 158 of file AbstractCarrier.cpp.

◆ interpretYarpNumber()

static int yarp::os::AbstractCarrier::interpretYarpNumber ( const yarp::os::Bytes b)
inlinestaticprotected

Definition at line 87 of file AbstractCarrier.h.

◆ isActive()

bool AbstractCarrier::isActive ( )
virtual

Check if carrier is alive and error free.

Returns
true if carrier is active.

Implements yarp::os::Carrier.

Reimplemented in yarp::os::BayerCarrier, yarp::os::MpiBcastCarrier, and yarp::os::impl::McastCarrier.

Definition at line 143 of file AbstractCarrier.cpp.

◆ isConnectionless()

bool AbstractCarrier::isConnectionless ( )
virtual

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.

Reimplemented in yarp::os::impl::LocalCarrier, yarp::os::MpiCarrier, yarp::os::impl::ShmemCarrier, yarp::os::impl::UdpCarrier, and yarp::os::impl::TcpCarrier.

Definition at line 20 of file AbstractCarrier.cpp.

◆ isLocal()

bool AbstractCarrier::isLocal ( )
virtual

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.

Reimplemented in yarp::os::impl::LocalCarrier.

Definition at line 56 of file AbstractCarrier.cpp.

◆ isTextMode()

bool AbstractCarrier::isTextMode ( )
virtual

Check if carrier is textual in nature.

Returns
true if carrier is text-based

Implements yarp::os::Carrier.

Reimplemented in yarp::os::BayerCarrier, yarp::os::impl::HttpCarrier, yarp::os::impl::NameserCarrier, and yarp::os::impl::TextCarrier.

Definition at line 41 of file AbstractCarrier.cpp.

◆ prepareSend()

bool AbstractCarrier::prepareSend ( ConnectionState proto)
virtual

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 66 of file AbstractCarrier.cpp.

◆ readYarpInt()

int AbstractCarrier::readYarpInt ( ConnectionState proto)

Definition at line 341 of file AbstractCarrier.cpp.

◆ requireAck()

bool AbstractCarrier::requireAck ( )
virtual

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

Returns
true if carrier requires acknowledgement.

Implements yarp::os::Carrier.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, yarp::os::impl::ShmemCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, and yarp::os::impl::TextCarrier.

Definition at line 46 of file AbstractCarrier.cpp.

◆ respondToHeader()

virtual bool yarp::os::AbstractCarrier::respondToHeader ( ConnectionState proto)
pure virtual

◆ sendAck()

bool AbstractCarrier::sendAck ( ConnectionState proto)
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::MpiCarrier, yarp::os::impl::NameserCarrier, and yarp::os::impl::TextCarrier.

Definition at line 133 of file AbstractCarrier.cpp.

◆ sendConnectionStateSpecifier()

bool AbstractCarrier::sendConnectionStateSpecifier ( ConnectionState proto)
protected

Definition at line 192 of file AbstractCarrier.cpp.

◆ sendHeader()

bool AbstractCarrier::sendHeader ( ConnectionState proto)
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, yarp::os::MpiCarrier, yarp::os::impl::McastCarrier, and yarp::os::impl::TextCarrier.

Definition at line 72 of file AbstractCarrier.cpp.

◆ sendIndex()

bool AbstractCarrier::sendIndex ( ConnectionState proto,
SizedWriter writer 
)
virtual

◆ sendSenderSpecifier()

bool AbstractCarrier::sendSenderSpecifier ( ConnectionState proto)
protected

Definition at line 203 of file AbstractCarrier.cpp.

◆ setCarrierParams()

void AbstractCarrier::setCarrierParams ( const yarp::os::Property params)
virtual

Configure carrier from port administrative commands.

Parameters
paramsproperties

Reimplemented from yarp::os::Carrier.

Reimplemented in yarp::os::PriorityCarrier, yarp::os::PortMonitor, and yarp::os::ModifyingCarrier.

Definition at line 148 of file AbstractCarrier.cpp.

◆ setParameters()

void AbstractCarrier::setParameters ( const yarp::os::Bytes header)
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::ShmemCarrier, yarp::os::impl::UdpCarrier, and yarp::os::impl::TcpCarrier.

Definition at line 14 of file AbstractCarrier.cpp.

◆ supportReply()

bool AbstractCarrier::supportReply ( )
virtual

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.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::NameserCarrier, yarp::os::MpiBcastCarrier, yarp::os::MpiP2PCarrier, yarp::os::MpiCarrier, and yarp::os::impl::TextCarrier.

Definition at line 26 of file AbstractCarrier.cpp.

◆ toString()

ConstString AbstractCarrier::toString ( )
virtual

Get name of carrier.

Returns
name of carrier.

Implements yarp::os::Carrier.

Reimplemented in yarp::os::PriorityCarrier, yarp::os::BayerCarrier, and yarp::os::PortMonitor.

Definition at line 61 of file AbstractCarrier.cpp.

◆ write()

bool AbstractCarrier::write ( ConnectionState proto,
SizedWriter writer 
)
protectedvirtual

Write a message.

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

Implements yarp::os::Carrier.

Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, and yarp::os::MpiCarrier.

Definition at line 172 of file AbstractCarrier.cpp.

◆ writeYarpInt()

void AbstractCarrier::writeYarpInt ( int  n,
ConnectionState proto 
)

Definition at line 353 of file AbstractCarrier.cpp.


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