YARP  2.3.68+225-20170329.5+gitb0d3289
Yet Another Robot Platform
yarp::os::XmlRpcCarrier Class Reference

This carrier enables XML/RPC message transmission. More...

#include <xmlrpc_carrier/XmlRpcCarrier.h>

+ Inheritance diagram for yarp::os::XmlRpcCarrier:

Public Member Functions

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

Private Member Functions

bool shouldInterpretRosMessages (ConnectionState &proto)
 

Private Attributes

bool firstRound
 
bool sender
 
Contact host
 
ConstString http
 
bool interpretRos
 

Detailed Description

This carrier enables XML/RPC message transmission.

Example: at the time of writing, there is a public XML/RPC server at http://phpxmlrpc.sourceforge.net/server.php which has several methods. One is called "examples.addtwo" and expects two integers and returns an integer. So we can do:

yarp name register /webserve xmlrpc+path.server.php phpxmlrpc.sourceforge.net 80

The "80" corresponds to the usual http port number. The "xmlrpc+path.server.php" means "use xmlrpc carrier, and use a request path of server.php". Often this path can be omitted, but is important for this particular server.

Then: $ yarp rpc /webserve examples.addtwo 10 20 will produce the output "30" if the server still exists.

Definition at line 42 of file XmlRpcCarrier.h.

Constructor & Destructor Documentation

◆ XmlRpcCarrier()

yarp::os::XmlRpcCarrier::XmlRpcCarrier ( )
inline

Definition at line 51 of file XmlRpcCarrier.h.

Member Function Documentation

◆ canAccept()

virtual bool yarp::os::XmlRpcCarrier::canAccept ( )
inlinevirtual

Check if reading is implemented for this carrier.

Returns
true if carrier can read messages

Implements yarp::os::Carrier.

Definition at line 73 of file XmlRpcCarrier.h.

◆ canEscape()

virtual bool yarp::os::XmlRpcCarrier::canEscape ( )
inlinevirtual

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.

Definition at line 88 of file XmlRpcCarrier.h.

◆ canOffer()

virtual bool yarp::os::XmlRpcCarrier::canOffer ( )
inlinevirtual

Check if writing is implemented for this carrier.

Returns
true if carrier can write messages

Implements yarp::os::Carrier.

Definition at line 78 of file XmlRpcCarrier.h.

◆ checkHeader()

virtual bool yarp::os::XmlRpcCarrier::checkHeader ( const Bytes header)
inlinevirtual

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.

Definition at line 121 of file XmlRpcCarrier.h.

◆ create()

virtual Carrier* yarp::os::XmlRpcCarrier::create ( )
inlinevirtual

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

Definition at line 58 of file XmlRpcCarrier.h.

◆ expectAck()

virtual bool yarp::os::XmlRpcCarrier::expectAck ( ConnectionState proto)
inlinevirtual

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.

Definition at line 200 of file XmlRpcCarrier.h.

◆ expectExtraHeader()

virtual bool yarp::os::XmlRpcCarrier::expectExtraHeader ( ConnectionState proto)
inlinevirtual

Receive any carrier-specific header.

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

Implements yarp::os::Carrier.

Definition at line 153 of file XmlRpcCarrier.h.

◆ expectIndex()

virtual bool yarp::os::XmlRpcCarrier::expectIndex ( ConnectionState proto)
inlinevirtual

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.

Definition at line 190 of file XmlRpcCarrier.h.

◆ expectReplyToHeader()

virtual bool yarp::os::XmlRpcCarrier::expectReplyToHeader ( ConnectionState proto)
inlinevirtual

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.

Definition at line 161 of file XmlRpcCarrier.h.

◆ expectSenderSpecifier()

bool XmlRpcCarrier::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.

Definition at line 76 of file XmlRpcCarrier.cpp.

◆ getBootstrapCarrierName()

virtual ConstString yarp::os::XmlRpcCarrier::getBootstrapCarrierName ( )
inlinevirtual

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.

Normally, this should be "tcp".

For carriers intended to interoperate with foreign ports not capable of initiating streams, the bootstrap carrier name should be left blank. YARP may use that fact to arrange for alternate methods of initiating a stream.

Returns
the name of the bootstrap carrier.

Reimplemented from yarp::os::Carrier.

Definition at line 205 of file XmlRpcCarrier.h.

◆ getHeader()

virtual void yarp::os::XmlRpcCarrier::getHeader ( const Bytes header)
inlinevirtual

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.

Definition at line 113 of file XmlRpcCarrier.h.

◆ getName()

virtual ConstString yarp::os::XmlRpcCarrier::getName ( )
inlinevirtual

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

Returns
the name of this connection type

Implements yarp::os::Connection.

Definition at line 63 of file XmlRpcCarrier.h.

◆ isActive()

virtual bool yarp::os::XmlRpcCarrier::isActive ( )
inlinevirtual

Check if carrier is alive and error free.

Returns
true if carrier is active.

Implements yarp::os::Carrier.

Definition at line 173 of file XmlRpcCarrier.h.

◆ isConnectionless()

virtual bool yarp::os::XmlRpcCarrier::isConnectionless ( )
inlinevirtual

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.

Definition at line 68 of file XmlRpcCarrier.h.

◆ isLocal()

virtual bool yarp::os::XmlRpcCarrier::isLocal ( )
inlinevirtual

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.

Definition at line 103 of file XmlRpcCarrier.h.

◆ isTextMode()

virtual bool yarp::os::XmlRpcCarrier::isTextMode ( )
inlinevirtual

Check if carrier is textual in nature.

Returns
true if carrier is text-based

Implements yarp::os::Carrier.

Definition at line 83 of file XmlRpcCarrier.h.

◆ prepareSend()

virtual bool yarp::os::XmlRpcCarrier::prepareSend ( ConnectionState proto)
inlinevirtual

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 143 of file XmlRpcCarrier.h.

◆ reply()

bool XmlRpcCarrier::reply ( ConnectionState proto,
SizedWriter writer 
)
virtual

Reimplemented from yarp::os::Carrier.

Definition at line 149 of file XmlRpcCarrier.cpp.

◆ requireAck()

virtual bool yarp::os::XmlRpcCarrier::requireAck ( )
inlinevirtual

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

Returns
true if carrier requires acknowledgement.

Implements yarp::os::Carrier.

Definition at line 93 of file XmlRpcCarrier.h.

◆ respondToHeader()

bool XmlRpcCarrier::respondToHeader ( ConnectionState proto)
virtual

Respond to the header.

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

Implements yarp::os::Carrier.

Definition at line 210 of file XmlRpcCarrier.cpp.

◆ sendAck()

virtual bool yarp::os::XmlRpcCarrier::sendAck ( ConnectionState proto)
inlinevirtual

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.

Definition at line 195 of file XmlRpcCarrier.h.

◆ sendHeader()

bool XmlRpcCarrier::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.

Definition at line 190 of file XmlRpcCarrier.cpp.

◆ sendIndex()

virtual bool yarp::os::XmlRpcCarrier::sendIndex ( ConnectionState proto,
SizedWriter writer 
)
inlinevirtual

Definition at line 185 of file XmlRpcCarrier.h.

◆ setParameters()

virtual void yarp::os::XmlRpcCarrier::setParameters ( const Bytes header)
inlinevirtual

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.

Definition at line 135 of file XmlRpcCarrier.h.

◆ shouldInterpretRosMessages()

bool XmlRpcCarrier::shouldInterpretRosMessages ( ConnectionState proto)
private

Definition at line 155 of file XmlRpcCarrier.cpp.

◆ supportReply()

virtual bool yarp::os::XmlRpcCarrier::supportReply ( )
inlinevirtual

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.

Definition at line 98 of file XmlRpcCarrier.h.

◆ toString()

virtual ConstString yarp::os::XmlRpcCarrier::toString ( )
inlinevirtual

Get name of carrier.

Returns
name of carrier.

Implements yarp::os::Carrier.

Definition at line 108 of file XmlRpcCarrier.h.

◆ write()

bool XmlRpcCarrier::write ( ConnectionState proto,
SizedWriter writer 
)
virtual

Write a message.

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

Implements yarp::os::Carrier.

Definition at line 82 of file XmlRpcCarrier.cpp.

Member Data Documentation

◆ firstRound

bool yarp::os::XmlRpcCarrier::firstRound
private

Definition at line 45 of file XmlRpcCarrier.h.

◆ host

Contact yarp::os::XmlRpcCarrier::host
private

Definition at line 47 of file XmlRpcCarrier.h.

◆ http

ConstString yarp::os::XmlRpcCarrier::http
private

Definition at line 48 of file XmlRpcCarrier.h.

◆ interpretRos

bool yarp::os::XmlRpcCarrier::interpretRos
private

Definition at line 49 of file XmlRpcCarrier.h.

◆ sender

bool yarp::os::XmlRpcCarrier::sender
private

Definition at line 46 of file XmlRpcCarrier.h.


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