A carrier for sending/receiving images via mjpeg over http. More...
#include <mjpeg_carrier/MjpegCarrier.h>
Public Member Functions | |
MjpegCarrier () | |
Carrier * | create () const override |
Factory method. More... | |
std::string | getName () const override |
Get the name of this connection type ("tcp", "mcast", "shmem", ...) More... | |
bool | isConnectionless () const override |
Check if this carrier is connectionless (like udp, mcast) or connection based (like tcp). 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... | |
void | handleEnvelope (const std::string &envelope) override |
Carriers that do not distinguish data from administrative headers (i.e. More... | |
bool | requireAck () const override |
Check if carrier has flow control, requiring sent messages to be acknowledged by recipient. 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 | isLocal () const override |
Check if carrier operates within a single process. More... | |
bool | isPush () const override |
Check if carrier is "push" or "pull" style. More... | |
std::string | toString () const override |
Get name of carrier. 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... | |
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 | setParameters (const yarp::os::Bytes &header) override |
Configure this carrier based on the first 8 bytes of the connection. More... | |
bool | prepareSend (yarp::os::ConnectionState &proto) override |
Perform any initialization needed before writing on a connection. More... | |
bool | sendHeader (yarp::os::ConnectionState &proto) override |
Write a header appropriate to the carrier to the connection, followed by any carrier-specific data. More... | |
bool | expectSenderSpecifier (yarp::os::ConnectionState &proto) override |
Expect the name of the sending port. More... | |
bool | expectExtraHeader (yarp::os::ConnectionState &proto) override |
Receive any carrier-specific header. 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... | |
bool | isActive () const override |
Check if carrier is alive and error free. More... | |
bool | write (yarp::os::ConnectionState &proto, yarp::os::SizedWriter &writer) override |
Write a message. More... | |
bool | reply (yarp::os::ConnectionState &proto, yarp::os::SizedWriter &writer) override |
virtual bool | sendIndex (yarp::os::ConnectionState &proto, yarp::os::SizedWriter &writer) |
bool | expectIndex (yarp::os::ConnectionState &proto) override |
Expect a message header, if there is one for this carrier. More... | |
bool | sendAck (yarp::os::ConnectionState &proto) override |
Send an acknowledgement, if needed for this carrier. More... | |
bool | expectAck (yarp::os::ConnectionState &proto) override |
Receive an acknowledgement, if expected for this carrier. More... | |
std::string | getBootstrapCarrierName () const 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 | |
bool | isBroadcast () const override |
Check if this carrier uses a broadcast mechanism. More... | |
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 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... | |
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 39 of file MjpegCarrier.h.
|
inline |
Definition at line 47 of file MjpegCarrier.h.
|
virtual |
Definition at line 228 of file MjpegCarrier.cpp.
|
inlineoverridevirtual |
Check if reading is implemented for this carrier.
Implements yarp::os::Carrier.
Definition at line 64 of file MjpegCarrier.h.
|
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.
Implements yarp::os::Carrier.
Definition at line 76 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Check if writing is implemented for this carrier.
Implements yarp::os::Carrier.
Definition at line 68 of file MjpegCarrier.h.
|
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.
header | a buffer holding the first 8 bytes received on the connection |
Implements yarp::os::Carrier.
Definition at line 113 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Factory method.
Get a new object of the same type as this one.
Implements yarp::os::Carrier.
Definition at line 52 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Receive an acknowledgement, if expected for this carrier.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 209 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Receive any carrier-specific header.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 145 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Expect a message header, if there is one for this carrier.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 201 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Process reply to header, if one is expected for this carrier.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 172 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Expect the name of the sending port.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 141 of file MjpegCarrier.h.
|
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.
Reimplemented from yarp::os::Carrier.
Definition at line 213 of file MjpegCarrier.h.
|
inlineoverridevirtual |
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.
Definition at line 105 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Get the name of this connection type ("tcp", "mcast", "shmem", ...)
Implements yarp::os::Connection.
Definition at line 56 of file MjpegCarrier.h.
|
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.
envelope | the envelope to transmit bundled with data. |
Reimplemented from yarp::os::Carrier.
Definition at line 80 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Check if carrier is alive and error free.
Implements yarp::os::Carrier.
Definition at line 186 of file MjpegCarrier.h.
|
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.
Implements yarp::os::Carrier.
Definition at line 60 of file MjpegCarrier.h.
|
inlineoverridevirtual |
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.
Definition at line 92 of file MjpegCarrier.h.
|
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.
Reimplemented from yarp::os::Carrier.
Definition at line 97 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Check if carrier is textual in nature.
Implements yarp::os::Carrier.
Definition at line 72 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Perform any initialization needed before writing on a connection.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 134 of file MjpegCarrier.h.
|
overridevirtual |
Reimplemented from yarp::os::Carrier.
Definition at line 202 of file MjpegCarrier.cpp.
|
inlineoverridevirtual |
Check if carrier has flow control, requiring sent messages to be acknowledged by recipient.
Implements yarp::os::Carrier.
Definition at line 84 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Respond to the header.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 153 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Send an acknowledgement, if needed for this carrier.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 205 of file MjpegCarrier.h.
|
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.
Definition at line 207 of file MjpegCarrier.cpp.
|
inlinevirtual |
Definition at line 197 of file MjpegCarrier.h.
|
inlineoverridevirtual |
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.
Definition at line 127 of file MjpegCarrier.h.
|
inlineoverridevirtual |
This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies.
Implements yarp::os::Carrier.
Definition at line 88 of file MjpegCarrier.h.
|
inlineoverridevirtual |
Get name of carrier.
Implements yarp::os::Carrier.
Definition at line 101 of file MjpegCarrier.h.
|
overridevirtual |
Write a message.
proto | the protocol object, which tracks connection state |
Implements yarp::os::Carrier.
Definition at line 160 of file MjpegCarrier.cpp.