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

Communicating via http. More...

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

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

Public Member Functions

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

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)
 

Detailed Description

Communicating via http.

Definition at line 93 of file HttpCarrier.h.

Constructor & Destructor Documentation

◆ HttpCarrier()

yarp::os::impl::HttpCarrier::HttpCarrier ( )

Definition at line 534 of file HttpCarrier.cpp.

Member Function Documentation

◆ checkHeader() [1/2]

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

◆ checkHeader() [2/2]

bool yarp::os::impl::HttpCarrier::checkHeader ( const Bytes header,
const char *  prefix 
)

Definition at line 554 of file HttpCarrier.cpp.

◆ create()

yarp::os::Carrier * yarp::os::impl::HttpCarrier::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 544 of file HttpCarrier.cpp.

◆ expectAck()

bool yarp::os::impl::HttpCarrier::expectAck ( ConnectionState proto)
overridevirtual

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 803 of file HttpCarrier.cpp.

◆ expectIndex()

bool yarp::os::impl::HttpCarrier::expectIndex ( ConnectionState proto)
overridevirtual

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 789 of file HttpCarrier.cpp.

◆ expectReplyToHeader()

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

◆ expectSenderSpecifier()

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

◆ getHeader()

void yarp::os::impl::HttpCarrier::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 603 of file HttpCarrier.cpp.

◆ getName()

std::string yarp::os::impl::HttpCarrier::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 549 of file HttpCarrier.cpp.

◆ isTextMode()

bool yarp::os::impl::HttpCarrier::isTextMode ( ) const
overridevirtual

Check if carrier is textual in nature.

Returns
true if carrier is text-based

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 618 of file HttpCarrier.cpp.

◆ reply()

bool yarp::os::impl::HttpCarrier::reply ( ConnectionState proto,
SizedWriter writer 
)
overridevirtual

Reimplemented from yarp::os::Carrier.

Definition at line 862 of file HttpCarrier.cpp.

◆ requireAck()

bool yarp::os::impl::HttpCarrier::requireAck ( ) const
overridevirtual

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

Returns
true if carrier requires acknowledgement.

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 613 of file HttpCarrier.cpp.

◆ respondToHeader()

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

◆ sendAck()

bool yarp::os::impl::HttpCarrier::sendAck ( ConnectionState proto)
overridevirtual

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 796 of file HttpCarrier.cpp.

◆ sendHeader()

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

◆ sendIndex()

bool yarp::os::impl::HttpCarrier::sendIndex ( ConnectionState proto,
SizedWriter writer 
)
overridevirtual

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 781 of file HttpCarrier.cpp.

◆ setParameters()

void yarp::os::impl::HttpCarrier::setParameters ( const Bytes header)
overridevirtual

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

Reimplemented from yarp::os::AbstractCarrier.

Definition at line 582 of file HttpCarrier.cpp.

◆ supportReply()

bool yarp::os::impl::HttpCarrier::supportReply ( ) const
overridevirtual

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.

Definition at line 624 of file HttpCarrier.cpp.

◆ write()

bool yarp::os::impl::HttpCarrier::write ( ConnectionState proto,
SizedWriter writer 
)
overridevirtual

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 821 of file HttpCarrier.cpp.


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