YARP
Yet Another Robot Platform
yarp::os::MpiCarrier Class Referenceabstract

Abstract base carrier for managing port communication via MPI. More...

#include <mpi_carrier/include/yarp/os/MpiCarrier.h>

+ Inheritance diagram for yarp::os::MpiCarrier:

Detailed Description

Abstract base carrier for managing port communication via MPI.

Definition at line 33 of file MpiCarrier.h.

Public Member Functions

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

Protected Attributes

MpiStreamstream
 
MpiCommcomm
 
std::string port
 
std::string name
 
std::string other
 
std::string route
 
std::string target
 

Additional Inherited Members

- Protected Member Functions inherited from yarp::os::AbstractCarrier
int getSpecifier (const Bytes &b) const
 
void createStandardHeader (int specifier, yarp::os::Bytes &header) const
 
bool sendConnectionStateSpecifier (ConnectionState &proto)
 
bool sendSenderSpecifier (ConnectionState &proto)
 
- Static Protected Member Functions inherited from yarp::os::AbstractCarrier
static int interpretYarpNumber (const yarp::os::Bytes &b)
 
static void createYarpNumber (int x, yarp::os::Bytes &header)
 

Constructor & Destructor Documentation

◆ MpiCarrier()

MpiCarrier::MpiCarrier ( )

Definition at line 21 of file MpiCarrier.cpp.

◆ ~MpiCarrier()

MpiCarrier::~MpiCarrier ( )
virtual

Definition at line 27 of file MpiCarrier.cpp.

Member Function Documentation

◆ canEscape()

virtual bool yarp::os::MpiCarrier::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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 53 of file MpiCarrier.h.

◆ checkHeader()

bool MpiCarrier::checkHeader ( const Bytes header)
overridevirtual

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::AbstractCarrier.

Definition at line 39 of file MpiCarrier.cpp.

◆ close()

virtual void yarp::os::MpiCarrier::close ( void  )
overridepure virtual

Close the carrier.

Reimplemented from yarp::os::Carrier.

Implemented in yarp::os::MpiBcastCarrier, and yarp::os::MpiP2PCarrier.

◆ create()

virtual Carrier* yarp::os::MpiCarrier::create ( ) const
overridepure virtual

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::AbstractCarrier.

Implemented in yarp::os::MpiBcastCarrier, and yarp::os::MpiP2PCarrier.

◆ createStream()

virtual void yarp::os::MpiCarrier::createStream ( bool  sender)
pure virtual

◆ expectAck()

virtual bool yarp::os::MpiCarrier::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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 94 of file MpiCarrier.h.

◆ expectIndex()

virtual bool yarp::os::MpiCarrier::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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 83 of file MpiCarrier.h.

◆ expectReplyToHeader()

bool MpiCarrier::expectReplyToHeader ( ConnectionState proto)
overridevirtual

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

Reimplemented from yarp::os::AbstractCarrier.

Reimplemented in yarp::os::MpiBcastCarrier.

Definition at line 157 of file MpiCarrier.cpp.

◆ expectSenderSpecifier()

bool MpiCarrier::expectSenderSpecifier ( ConnectionState proto)
overridevirtual

Expect the name of the sending port.

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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 105 of file MpiCarrier.cpp.

◆ getHeader()

void MpiCarrier::getHeader ( Bytes header) const
overridevirtual

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::AbstractCarrier.

Definition at line 33 of file MpiCarrier.cpp.

◆ getName()

virtual std::string yarp::os::MpiCarrier::getName ( ) const
overridepure virtual

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

Returns
the name of this connection type

Implements yarp::os::AbstractCarrier.

Implemented in yarp::os::MpiBcastCarrier, and yarp::os::MpiP2PCarrier.

◆ isConnectionless()

virtual bool yarp::os::MpiCarrier::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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 49 of file MpiCarrier.h.

◆ respondToHeader()

bool MpiCarrier::respondToHeader ( ConnectionState proto)
overridevirtual

Respond to the header.

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

Implements yarp::os::AbstractCarrier.

Definition at line 138 of file MpiCarrier.cpp.

◆ sendAck()

virtual bool yarp::os::MpiCarrier::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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 90 of file MpiCarrier.h.

◆ sendHeader()

bool MpiCarrier::sendHeader ( ConnectionState proto)
overridevirtual

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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 51 of file MpiCarrier.cpp.

◆ sendIndex()

virtual bool yarp::os::MpiCarrier::sendIndex ( ConnectionState proto,
SizedWriter writer 
)
inlineoverridevirtual

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 79 of file MpiCarrier.h.

◆ supportReply()

virtual bool yarp::os::MpiCarrier::supportReply ( ) const
overridepure 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

Reimplemented from yarp::os::AbstractCarrier.

Implemented in yarp::os::MpiBcastCarrier, and yarp::os::MpiP2PCarrier.

◆ write()

bool yarp::os::MpiCarrier::write ( ConnectionState proto,
SizedWriter writer 
)
inlineoverridevirtual

Write a message.

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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 74 of file MpiCarrier.h.

Member Data Documentation

◆ comm

MpiComm* yarp::os::MpiCarrier::comm
protected

Definition at line 36 of file MpiCarrier.h.

◆ name

std::string yarp::os::MpiCarrier::name
protected

Definition at line 38 of file MpiCarrier.h.

◆ other

std::string yarp::os::MpiCarrier::other
protected

Definition at line 38 of file MpiCarrier.h.

◆ port

std::string yarp::os::MpiCarrier::port
protected

Definition at line 37 of file MpiCarrier.h.

◆ route

std::string yarp::os::MpiCarrier::route
protected

Definition at line 38 of file MpiCarrier.h.

◆ stream

MpiStream* yarp::os::MpiCarrier::stream
protected

Definition at line 35 of file MpiCarrier.h.

◆ target

std::string yarp::os::MpiCarrier::target
protected

Definition at line 39 of file MpiCarrier.h.


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