YARP
Yet Another Robot Platform
yarp::os::impl::McastCarrier Class Reference

Communicating between two ports via MCAST. More...

#include <yarp/os/impl/McastCarrier.h>

+ Inheritance diagram for yarp::os::impl::McastCarrier:

Public Member Functions

 McastCarrier ()
 
virtual ~McastCarrier ()
 
Carriercreate () const override
 Factory method. More...
 
std::string getName () const override
 Get the name of this connection type ("tcp", "mcast", "shmem", ...) More...
 
int getSpecifierCode () const override
 
bool sendHeader (ConnectionState &proto) override
 Write a header appropriate to the carrier to the connection, followed by any carrier-specific data. More...
 
bool expectExtraHeader (ConnectionState &proto) override
 Receive any carrier-specific header. More...
 
bool respondToHeader (ConnectionState &proto) override
 Respond to the header. More...
 
bool expectReplyToHeader (ConnectionState &proto) override
 Process reply to header, if one is expected for this carrier. More...
 
bool becomeMcast (ConnectionState &proto, bool sender)
 
void addSender (const std::string &key)
 
void removeSender (const std::string &key)
 
bool isElect () const
 
bool takeElection ()
 takeElection, this function is called when the elect mcast carrier dies and pass the write buffers to another one. More...
 
bool isActive () const override
 Check if carrier is alive and error free. More...
 
bool isBroadcast () const override
 Check if this carrier uses a broadcast mechanism. More...
 
- Public Member Functions inherited from yarp::os::impl::UdpCarrier
 UdpCarrier ()
 
Carriercreate () const override
 Factory method. More...
 
std::string getName () const override
 Get the name of this connection type ("tcp", "mcast", "shmem", ...) More...
 
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...
 
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...
 
void setParameters (const Bytes &header) override
 Configure this carrier based on the first 8 bytes of the connection. More...
 
bool requireAck () const override
 Check if carrier has flow control, requiring sent messages to be acknowledged by recipient. More...
 
bool isConnectionless () const override
 Check if this carrier is connectionless (like udp, mcast) or connection based (like tcp). More...
 
bool respondToHeader (ConnectionState &proto) override
 Respond to the header. More...
 
bool expectReplyToHeader (ConnectionState &proto) override
 Process reply to header, if one is expected for this carrier. More...
 
- Public Member Functions inherited from yarp::os::AbstractCarrier
void setCarrierParams (const yarp::os::Property &params) override
 Configure carrier from port administrative commands. More...
 
void getCarrierParams (yarp::os::Property &params) const override
 Get carrier configuration and deliver it by port administrative commands. 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 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 isTextMode () const override
 Check if carrier is textual in nature. More...
 
bool canEscape () const override
 Check if carrier can encode administrative messages, as opposed to just user data. More...
 
bool isLocal () const override
 Check if carrier operates within a single process. More...
 
std::string toString () const override
 Get name of carrier. More...
 
bool prepareSend (ConnectionState &proto) override
 Perform any initialization needed before writing on a connection. More...
 
virtual bool sendIndex (ConnectionState &proto, SizedWriter &writer)
 
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...
 
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
void handleEnvelope (const std::string &envelope) override
 Carriers that do not distinguish data from administrative headers (i.e. More...
 
bool isPush () const override
 Check if carrier is "push" or "pull" style. More...
 
virtual bool reply (ConnectionState &proto, SizedWriter &writer)
 
void prepareDisconnect () override
 Do cleanup and preparation for the coming disconnect, if necessary. More...
 
virtual void close ()
 Close the carrier. 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...
 
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 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...
 
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)
 
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...
 
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...
 

Static Protected Member Functions

static ElectionOf< PeerRecord< McastCarrier > > & getCaster ()
 
- 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)
 

Protected Attributes

Contact mcastAddress
 
std::string mcastName
 
std::string key
 
DgramTwoWayStreamstream
 
Contact local
 

Static Protected Attributes

static ElectionOf< PeerRecord< McastCarrier > > * caster = nullptr
 

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 write (ConnectionState &proto, SizedWriter &writer) override
 Write a message. More...
 
bool sendConnectionStateSpecifier (ConnectionState &proto)
 
bool sendSenderSpecifier (ConnectionState &proto)
 

Detailed Description

Communicating between two ports via MCAST.

Definition at line 28 of file McastCarrier.h.

Constructor & Destructor Documentation

◆ McastCarrier()

yarp::os::impl::McastCarrier::McastCarrier ( )

Definition at line 47 of file McastCarrier.cpp.

◆ ~McastCarrier()

yarp::os::impl::McastCarrier::~McastCarrier ( )
virtual

Definition at line 53 of file McastCarrier.cpp.

Member Function Documentation

◆ addSender()

void yarp::os::impl::McastCarrier::addSender ( const std::string &  key)

Definition at line 236 of file McastCarrier.cpp.

◆ becomeMcast()

bool yarp::os::impl::McastCarrier::becomeMcast ( ConnectionState proto,
bool  sender 
)

Definition at line 186 of file McastCarrier.cpp.

◆ create()

Carrier * yarp::os::impl::McastCarrier::create ( ) const
overridevirtual

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.

Definition at line 72 of file McastCarrier.cpp.

◆ expectExtraHeader()

bool yarp::os::impl::McastCarrier::expectExtraHeader ( ConnectionState proto)
overridevirtual

Receive any carrier-specific header.

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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 153 of file McastCarrier.cpp.

◆ expectReplyToHeader()

bool yarp::os::impl::McastCarrier::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.

Definition at line 231 of file McastCarrier.cpp.

◆ getCaster()

ElectionOf< PeerRecord< McastCarrier > > & McastCarrier::getCaster ( )
staticprotected

Definition at line 30 of file McastCarrier.cpp.

◆ getName()

std::string yarp::os::impl::McastCarrier::getName ( ) const
overridevirtual

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

Returns
the name of this connection type

Implements yarp::os::AbstractCarrier.

Definition at line 77 of file McastCarrier.cpp.

◆ getSpecifierCode()

int yarp::os::impl::McastCarrier::getSpecifierCode ( ) const
overridevirtual

Reimplemented from yarp::os::impl::UdpCarrier.

Definition at line 82 of file McastCarrier.cpp.

◆ isActive()

bool yarp::os::impl::McastCarrier::isActive ( ) const
overridevirtual

Check if carrier is alive and error free.

Returns
true if carrier is active.

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 262 of file McastCarrier.cpp.

◆ isBroadcast()

bool yarp::os::impl::McastCarrier::isBroadcast ( ) const
overridevirtual

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 267 of file McastCarrier.cpp.

◆ isElect()

bool yarp::os::impl::McastCarrier::isElect ( ) const

Definition at line 246 of file McastCarrier.cpp.

◆ removeSender()

void yarp::os::impl::McastCarrier::removeSender ( const std::string &  key)

Definition at line 241 of file McastCarrier.cpp.

◆ respondToHeader()

bool yarp::os::impl::McastCarrier::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 225 of file McastCarrier.cpp.

◆ sendHeader()

bool yarp::os::impl::McastCarrier::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 88 of file McastCarrier.cpp.

◆ takeElection()

bool yarp::os::impl::McastCarrier::takeElection ( )

takeElection, this function is called when the elect mcast carrier dies and pass the write buffers to another one.

Returns
true if the join of mcast is successful false otherwise.

Definition at line 253 of file McastCarrier.cpp.

Member Data Documentation

◆ caster

ElectionOf< PeerRecord< McastCarrier > > * McastCarrier::caster = nullptr
staticprotected

Definition at line 38 of file McastCarrier.h.

◆ key

std::string yarp::os::impl::McastCarrier::key
protected

Definition at line 34 of file McastCarrier.h.

◆ local

Contact yarp::os::impl::McastCarrier::local
protected

Definition at line 36 of file McastCarrier.h.

◆ mcastAddress

Contact yarp::os::impl::McastCarrier::mcastAddress
protected

Definition at line 32 of file McastCarrier.h.

◆ mcastName

std::string yarp::os::impl::McastCarrier::mcastName
protected

Definition at line 33 of file McastCarrier.h.

◆ stream

DgramTwoWayStream* yarp::os::impl::McastCarrier::stream
protected

Definition at line 35 of file McastCarrier.h.


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