YARP  2.3.70.1
Yet Another Robot Platform
yarp::os::MjpegCarrier Class Reference

A carrier for sending/receiving images via mjpeg over http. More...

#include <mjpeg_carrier/MjpegCarrier.h>

+ Inheritance diagram for yarp::os::MjpegCarrier:

Public Member Functions

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

bool firstRound
 
bool sender
 
yarp::os::ConstString envelope
 

Detailed Description

A carrier for sending/receiving images via mjpeg over http.

Picking a random webcam stream: http://cam.mauirealestate.net:8010/axis-cgi/mjpg/video.cgi?resolution=320x240 (it will probably be dead by the time you read this, but finding others is easy...) Register this: yarp name register /webcam mjpeg+path.axis-cgi/mjpg/video.cgi?resolution=320x240 cam.mauirealestate.net 8010 Make a viewer: yarpview /view Connect: yarp connect /webcam /view You can also view yarp image ports from a browser. Do a "yarp name query /portname" to find their port number NNN, then go to: http://localhost:NNN/?output=stream

Definition at line 42 of file MjpegCarrier.h.

Constructor & Destructor Documentation

◆ MjpegCarrier()

yarp::os::MjpegCarrier::MjpegCarrier ( )
inline

Definition at line 48 of file MjpegCarrier.h.

Member Function Documentation

◆ autoCompression()

bool MjpegCarrier::autoCompression ( ) const
virtual

Definition at line 214 of file MjpegCarrier.cpp.

◆ canAccept()

virtual bool yarp::os::MjpegCarrier::canAccept ( )
inlineoverridevirtual

Check if reading is implemented for this carrier.

Returns
true if carrier can read messages

Implements yarp::os::Carrier.

Definition at line 65 of file MjpegCarrier.h.

◆ canEscape()

virtual bool yarp::os::MjpegCarrier::canEscape ( )
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

Implements yarp::os::Carrier.

Definition at line 77 of file MjpegCarrier.h.

◆ canOffer()

virtual bool yarp::os::MjpegCarrier::canOffer ( )
inlineoverridevirtual

Check if writing is implemented for this carrier.

Returns
true if carrier can write messages

Implements yarp::os::Carrier.

Definition at line 69 of file MjpegCarrier.h.

◆ checkHeader()

virtual bool yarp::os::MjpegCarrier::checkHeader ( const Bytes header)
inlineoverridevirtual

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 114 of file MjpegCarrier.h.

◆ create()

virtual Carrier* yarp::os::MjpegCarrier::create ( )
inlineoverridevirtual

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 53 of file MjpegCarrier.h.

◆ expectAck()

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

Implements yarp::os::Carrier.

Definition at line 210 of file MjpegCarrier.h.

◆ expectExtraHeader()

virtual bool yarp::os::MjpegCarrier::expectExtraHeader ( ConnectionState proto)
inlineoverridevirtual

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 146 of file MjpegCarrier.h.

◆ expectIndex()

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

Implements yarp::os::Carrier.

Definition at line 202 of file MjpegCarrier.h.

◆ expectReplyToHeader()

virtual bool yarp::os::MjpegCarrier::expectReplyToHeader ( ConnectionState proto)
inlineoverridevirtual

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 173 of file MjpegCarrier.h.

◆ expectSenderSpecifier()

virtual bool yarp::os::MjpegCarrier::expectSenderSpecifier ( ConnectionState proto)
inlineoverridevirtual

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 142 of file MjpegCarrier.h.

◆ getBootstrapCarrierName()

virtual ConstString yarp::os::MjpegCarrier::getBootstrapCarrierName ( )
inlineoverridevirtual

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 214 of file MjpegCarrier.h.

◆ getHeader()

virtual void yarp::os::MjpegCarrier::getHeader ( const Bytes header)
inlineoverridevirtual

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 106 of file MjpegCarrier.h.

◆ getName()

virtual ConstString yarp::os::MjpegCarrier::getName ( )
inlineoverridevirtual

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

Returns
the name of this connection type

Implements yarp::os::Connection.

Definition at line 57 of file MjpegCarrier.h.

◆ handleEnvelope()

virtual void yarp::os::MjpegCarrier::handleEnvelope ( const yarp::os::ConstString envelope)
inlineoverridevirtual

Carriers that do not distinguish data from administrative headers (i.e.

canEscape returns false), can overload this method to handle the envelope inside the stream. On the receiving side, the InputStream will have to overload the yarp::os::InputStream::setReadEnvelopeCallback method, and execute the callback as soon as the envelope is ready.

Parameters
envelopethe envelope to transmit bundled with data.

Reimplemented from yarp::os::Carrier.

Definition at line 81 of file MjpegCarrier.h.

◆ isActive()

virtual bool yarp::os::MjpegCarrier::isActive ( )
inlineoverridevirtual

Check if carrier is alive and error free.

Returns
true if carrier is active.

Implements yarp::os::Carrier.

Definition at line 187 of file MjpegCarrier.h.

◆ isConnectionless()

virtual bool yarp::os::MjpegCarrier::isConnectionless ( )
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

Implements yarp::os::Carrier.

Definition at line 61 of file MjpegCarrier.h.

◆ isLocal()

virtual bool yarp::os::MjpegCarrier::isLocal ( )
inlineoverridevirtual

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 93 of file MjpegCarrier.h.

◆ isPush()

virtual bool yarp::os::MjpegCarrier::isPush ( )
inlineoverridevirtual

Check if carrier is "push" or "pull" style.

Push means that the side that initiates a connection is also the one that will sending of data or commands. All native YARP connections are like this. A "pull" style is equivalent to automatically sending a "reverse connection" port command at the start of the connection.

Returns
true if carrier is "push" style, false if "pull" style

Reimplemented from yarp::os::Carrier.

Definition at line 98 of file MjpegCarrier.h.

◆ isTextMode()

virtual bool yarp::os::MjpegCarrier::isTextMode ( )
inlineoverridevirtual

Check if carrier is textual in nature.

Returns
true if carrier is text-based

Implements yarp::os::Carrier.

Definition at line 73 of file MjpegCarrier.h.

◆ prepareSend()

virtual bool yarp::os::MjpegCarrier::prepareSend ( ConnectionState proto)
inlineoverridevirtual

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 135 of file MjpegCarrier.h.

◆ reply()

bool MjpegCarrier::reply ( ConnectionState proto,
SizedWriter writer 
)
overridevirtual

Reimplemented from yarp::os::Carrier.

Definition at line 188 of file MjpegCarrier.cpp.

◆ requireAck()

virtual bool yarp::os::MjpegCarrier::requireAck ( )
inlineoverridevirtual

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 85 of file MjpegCarrier.h.

◆ respondToHeader()

bool yarp::os::MjpegCarrier::respondToHeader ( ConnectionState proto)
inlineoverridevirtual

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 154 of file MjpegCarrier.h.

◆ sendAck()

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

Implements yarp::os::Carrier.

Definition at line 206 of file MjpegCarrier.h.

◆ sendHeader()

bool MjpegCarrier::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

Implements yarp::os::Carrier.

Definition at line 193 of file MjpegCarrier.cpp.

◆ sendIndex()

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

Definition at line 198 of file MjpegCarrier.h.

◆ setParameters()

virtual void yarp::os::MjpegCarrier::setParameters ( const Bytes header)
inlineoverridevirtual

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 128 of file MjpegCarrier.h.

◆ supportReply()

virtual bool yarp::os::MjpegCarrier::supportReply ( )
inlineoverridevirtual

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 89 of file MjpegCarrier.h.

◆ toString()

virtual ConstString yarp::os::MjpegCarrier::toString ( )
inlineoverridevirtual

Get name of carrier.

Returns
name of carrier.

Implements yarp::os::Carrier.

Definition at line 102 of file MjpegCarrier.h.

◆ write()

bool MjpegCarrier::write ( ConnectionState proto,
SizedWriter writer 
)
overridevirtual

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 146 of file MjpegCarrier.cpp.

Member Data Documentation

◆ envelope

yarp::os::ConstString yarp::os::MjpegCarrier::envelope
private

Definition at line 46 of file MjpegCarrier.h.

◆ firstRound

bool yarp::os::MjpegCarrier::firstRound
private

Definition at line 44 of file MjpegCarrier.h.

◆ sender

bool yarp::os::MjpegCarrier::sender
private

Definition at line 45 of file MjpegCarrier.h.


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