A starter class for implementing simple carriers. More...
#include <yarp/os/AbstractCarrier.h>
Inheritance diagram for yarp::os::AbstractCarrier:A starter class for implementing simple carriers.
It implements reasonable default behavior.
Definition at line 24 of file AbstractCarrier.h.
Public Member Functions | |
| Carrier * | create () const override=0 |
| Factory method. More... | |
| std::string | getName () const override=0 |
| Get the name of this connection type ("tcp", "mcast", "shmem", ...) More... | |
| bool | checkHeader (const yarp::os::Bytes &header) 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... | |
| void | setParameters (const yarp::os::Bytes &header) override |
| Configure this carrier based on the first 8 bytes of the connection. More... | |
| void | getHeader (yarp::os::Bytes &header) const override=0 |
| Provide 8 bytes describing this connection sufficiently to allow the other side of a connection to select it. More... | |
| void | setCarrierParams (const yarp::os::Property ¶ms) override |
| Configure carrier from port administrative commands. More... | |
| void | getCarrierParams (yarp::os::Property ¶ms) const override |
| Get carrier configuration and deliver it by port administrative commands. More... | |
| bool | isConnectionless () const override |
| Check if this carrier is connectionless (like udp, mcast) or connection based (like tcp). 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 | requireAck () const override |
| Check if carrier has flow control, requiring sent messages to be acknowledged by recipient. 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 | isActive () const override |
| Check if carrier is alive and error free. 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... | |
| virtual bool | sendIndex (ConnectionState &proto, SizedWriter &writer) |
| bool | expectExtraHeader (ConnectionState &proto) override |
| Receive any carrier-specific header. More... | |
| bool | respondToHeader (ConnectionState &proto) override=0 |
| 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... | |
| 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 | |
| bool | isBroadcast () const override |
| Check if this carrier uses a broadcast mechanism. More... | |
| 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... | |
| ConnectionReader & | modifyIncomingData (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 PortWriter & | modifyOutgoingData (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... | |
| PortReader & | modifyReply (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 ¶ms) override |
| Configure carrier from port administrative commands. More... | |
| void | getCarrierParams (Property ¶ms) const override |
| Get carrier configuration and deliver it by port administrative commands. More... | |
| virtual yarp::os::Face * | createFace () 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 Member Functions | |
| 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) |
Static Protected Member Functions | |
| static int | interpretYarpNumber (const yarp::os::Bytes &b) |
| static void | createYarpNumber (int x, yarp::os::Bytes &header) |
|
overridevirtual |
Check if reading is implemented for this carrier.
Implements yarp::os::Carrier.
Definition at line 39 of file AbstractCarrier.cpp.
|
overridevirtual |
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.
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, and MpiCarrier.
Definition at line 59 of file AbstractCarrier.cpp.
|
overridevirtual |
Check if writing is implemented for this carrier.
Implements yarp::os::Carrier.
Definition at line 44 of file AbstractCarrier.cpp.
|
overridepure 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.
| header | a buffer holding the first 8 bytes received on the connection |
Implements yarp::os::Carrier.
Implemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, MpiCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, ShmemCarrier, and yarp::os::ModifyingCarrier.
|
overridepure virtual |
Factory method.
Get a new object of the same type as this one.
Implements yarp::os::Carrier.
Implemented in yarp::os::impl::HttpCarrier, PriorityCarrier, yarp::os::impl::LocalCarrier, BayerCarrier, yarp::os::impl::NameserCarrier, PortMonitor, yarp::os::impl::McastCarrier, MpiBcastCarrier, MpiP2PCarrier, MpiCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, yarp::os::ModifyingCarrier, and ShmemCarrier.
|
protected |
Definition at line 173 of file AbstractCarrier.cpp.
|
staticprotected |
Definition at line 378 of file AbstractCarrier.cpp.
| bool AbstractCarrier::defaultExpectAck | ( | ConnectionState & | proto | ) |
Default implementation for the expectAck method.
Definition at line 243 of file AbstractCarrier.cpp.
| bool AbstractCarrier::defaultExpectIndex | ( | ConnectionState & | proto | ) |
Default implementation for the expectIndex method.
Definition at line 267 of file AbstractCarrier.cpp.
| bool AbstractCarrier::defaultSendAck | ( | ConnectionState & | proto | ) |
Default implementation for the sendAck method.
Definition at line 336 of file AbstractCarrier.cpp.
| bool AbstractCarrier::defaultSendHeader | ( | ConnectionState & | proto | ) |
Default implementation for the sendHeader method.
Definition at line 189 of file AbstractCarrier.cpp.
| bool AbstractCarrier::defaultSendIndex | ( | ConnectionState & | proto, |
| SizedWriter & | writer | ||
| ) |
Default implementation for the sendIndex method.
Definition at line 224 of file AbstractCarrier.cpp.
|
overridevirtual |
Receive an acknowledgement, if expected for this carrier.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, MpiCarrier, yarp::os::impl::NameserCarrier, and yarp::os::impl::TextCarrier.
Definition at line 144 of file AbstractCarrier.cpp.
|
overridevirtual |
Receive any carrier-specific header.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::LocalCarrier, and yarp::os::impl::McastCarrier.
Definition at line 97 of file AbstractCarrier.cpp.
|
overridevirtual |
Expect a message header, if there is one for this carrier.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, MpiCarrier, and yarp::os::impl::TextCarrier.
Definition at line 103 of file AbstractCarrier.cpp.
|
overridevirtual |
Process reply to header, if one is expected for this carrier.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, MpiBcastCarrier, MpiCarrier, yarp::os::impl::McastCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, and ShmemCarrier.
Definition at line 86 of file AbstractCarrier.cpp.
|
overridevirtual |
Expect the name of the sending port.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::NameserCarrier, MpiCarrier, and yarp::os::impl::TextCarrier.
Definition at line 108 of file AbstractCarrier.cpp.
|
overridevirtual |
Get carrier configuration and deliver it by port administrative commands.
| params | output carrier properties |
Implements yarp::os::Connection.
Reimplemented in PriorityCarrier, PortMonitor, and yarp::os::ModifyingCarrier.
Definition at line 159 of file AbstractCarrier.cpp.
|
overridepure virtual |
Provide 8 bytes describing this connection sufficiently to allow the other side of a connection to select it.
| header | a 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, MpiCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, ShmemCarrier, and yarp::os::ModifyingCarrier.
|
overridepure virtual |
Get the name of this connection type ("tcp", "mcast", "shmem", ...)
Implements yarp::os::Connection.
Implemented in yarp::os::impl::HttpCarrier, PriorityCarrier, yarp::os::impl::LocalCarrier, BayerCarrier, PortMonitor, yarp::os::impl::NameserCarrier, MpiP2PCarrier, MpiBcastCarrier, yarp::os::impl::McastCarrier, MpiCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, yarp::os::ModifyingCarrier, and ShmemCarrier.
|
protected |
Definition at line 164 of file AbstractCarrier.cpp.
|
staticprotected |
Definition at line 365 of file AbstractCarrier.cpp.
|
overridevirtual |
Check if carrier is alive and error free.
Implements yarp::os::Carrier.
Reimplemented in BayerCarrier, MpiBcastCarrier, and yarp::os::impl::McastCarrier.
Definition at line 149 of file AbstractCarrier.cpp.
|
overridevirtual |
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.
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::LocalCarrier, MpiCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, and ShmemCarrier.
Definition at line 28 of file AbstractCarrier.cpp.
|
overridevirtual |
Check if carrier operates within a single process.
In such a case, YARP connections may get completely reorganized in order to optimize them.
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::LocalCarrier.
Definition at line 64 of file AbstractCarrier.cpp.
|
overridevirtual |
Check if carrier is textual in nature.
Implements yarp::os::Carrier.
Reimplemented in BayerCarrier, yarp::os::impl::HttpCarrier, yarp::os::impl::NameserCarrier, and yarp::os::impl::TextCarrier.
Definition at line 49 of file AbstractCarrier.cpp.
|
overridevirtual |
Perform any initialization needed before writing on a connection.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 74 of file AbstractCarrier.cpp.
| int AbstractCarrier::readYarpInt | ( | ConnectionState & | proto | ) |
Read 8 bytes and interpret them as a YARP number.
Definition at line 345 of file AbstractCarrier.cpp.
|
overridevirtual |
Check if carrier has flow control, requiring sent messages to be acknowledged by recipient.
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, yarp::os::impl::TextCarrier, and ShmemCarrier.
Definition at line 54 of file AbstractCarrier.cpp.
|
overridepure virtual |
Respond to the header.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Implemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, MpiCarrier, yarp::os::impl::McastCarrier, yarp::os::impl::TextCarrier, yarp::os::impl::UdpCarrier, yarp::os::impl::TcpCarrier, ShmemCarrier, and yarp::os::ModifyingCarrier.
|
overridevirtual |
Send an acknowledgement, if needed for this carrier.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, MpiCarrier, yarp::os::impl::NameserCarrier, and yarp::os::impl::TextCarrier.
Definition at line 139 of file AbstractCarrier.cpp.
|
protected |
Definition at line 198 of file AbstractCarrier.cpp.
|
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.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, MpiCarrier, yarp::os::impl::McastCarrier, and yarp::os::impl::TextCarrier.
Definition at line 80 of file AbstractCarrier.cpp.
|
virtual |
Reimplemented in yarp::os::impl::HttpCarrier, MpiCarrier, and yarp::os::impl::TextCarrier.
Definition at line 92 of file AbstractCarrier.cpp.
|
protected |
Definition at line 209 of file AbstractCarrier.cpp.
|
overridevirtual |
Configure carrier from port administrative commands.
| params | carrier properties |
Implements yarp::os::Connection.
Reimplemented in PriorityCarrier, PortMonitor, and yarp::os::ModifyingCarrier.
Definition at line 154 of file AbstractCarrier.cpp.
|
overridevirtual |
Configure this carrier based on the first 8 bytes of the connection.
This will only be called if checkHeader passed.
| header | a 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::UdpCarrier, yarp::os::impl::TcpCarrier, and ShmemCarrier.
Definition at line 22 of file AbstractCarrier.cpp.
|
overridevirtual |
This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies.
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::NameserCarrier, MpiP2PCarrier, MpiBcastCarrier, MpiCarrier, and yarp::os::impl::TextCarrier.
Definition at line 34 of file AbstractCarrier.cpp.
|
overridevirtual |
Get name of carrier.
Implements yarp::os::Carrier.
Reimplemented in PriorityCarrier, BayerCarrier, and PortMonitor.
Definition at line 69 of file AbstractCarrier.cpp.
|
overrideprotectedvirtual |
Write a message.
| proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Reimplemented in yarp::os::impl::HttpCarrier, yarp::os::impl::LocalCarrier, yarp::os::impl::NameserCarrier, and MpiCarrier.
Definition at line 178 of file AbstractCarrier.cpp.
| void AbstractCarrier::writeYarpInt | ( | int | n, |
| ConnectionState & | proto | ||
| ) |
Write n as an 8 bytes yarp number.
Definition at line 357 of file AbstractCarrier.cpp.