Qt 4.8
|
The QPacketProtocol class encapsulates communicating discrete packets across fragmented IO channels, such as TCP sockets. More...
#include <qpacketprotocol_p.h>
Signals | |
void | invalidPacket () |
A packet larger than the maximum allowable packet size was received. More... | |
void | packetWritten () |
Emitted each time a packet is completing written to the device. More... | |
void | readyRead () |
Emitted whenever a new packet is received. More... | |
Signals inherited from QObject | |
void | destroyed (QObject *=0) |
This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More... | |
Public Functions | |
void | clear () |
Discard any unread packets. More... | |
QIODevice * | device () |
Return the QIODevice passed to the QPacketProtocol constructor. More... | |
qint32 | maximumPacketSize () const |
Returns the maximum packet size allowed. More... | |
qint64 | packetsAvailable () const |
Returns the number of received packets yet to be read. More... | |
QPacketProtocol (QIODevice *dev, QObject *parent=0) | |
Construct a QPacketProtocol instance that works on dev with the specified parent. More... | |
QPacket | read () |
Return the next unread packet, or an invalid QPacket instance if no packets are available. More... | |
QPacketAutoSend | send () |
Returns a streamable object that is transmitted on destruction. More... | |
void | send (const QPacket &) |
Transmit the packet. More... | |
qint32 | setMaximumPacketSize (qint32) |
Sets the maximum allowable packet size to max. More... | |
bool | waitForReadyRead (int msecs=3000) |
This function locks until a new packet is available for reading and the QIODevice::readyRead() signal has been emitted. More... | |
virtual | ~QPacketProtocol () |
Destroys the QPacketProtocol instance. More... | |
Public Functions inherited from QObject | |
bool | blockSignals (bool b) |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More... | |
const QObjectList & | children () const |
Returns a list of child objects. More... | |
bool | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0) |
bool | disconnect (const QObject *receiver, const char *member=0) |
void | dumpObjectInfo () |
Dumps information about signal connections, etc. More... | |
void | dumpObjectTree () |
Dumps a tree of children to the debug output. More... | |
QList< QByteArray > | dynamicPropertyNames () const |
Returns the names of all properties that were dynamically added to the object using setProperty(). More... | |
virtual bool | event (QEvent *) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. More... | |
virtual bool | eventFilter (QObject *, QEvent *) |
Filters events if this object has been installed as an event filter for the watched object. More... | |
template<typename T > | |
T | findChild (const QString &aName=QString()) const |
Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More... | |
template<typename T > | |
QList< T > | findChildren (const QString &aName=QString()) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More... | |
template<typename T > | |
QList< T > | findChildren (const QRegExp &re) const |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More... | |
void | installEventFilter (QObject *) |
Installs an event filter filterObj on this object. More... | |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false. More... | |
void | killTimer (int id) |
Kills the timer with timer identifier, id. More... | |
virtual const QMetaObject * | metaObject () const |
Returns a pointer to the meta-object of this object. More... | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. More... | |
QString | objectName () const |
QObject * | parent () const |
Returns a pointer to the parent object. More... | |
QVariant | property (const char *name) const |
Returns the value of the object's name property. More... | |
Q_INVOKABLE | QObject (QObject *parent=0) |
Constructs an object with parent object parent. More... | |
void | removeEventFilter (QObject *) |
Removes an event filter object obj from this object. More... | |
void | setObjectName (const QString &name) |
void | setParent (QObject *) |
Makes the object a child of parent. More... | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. More... | |
void | setUserData (uint id, QObjectUserData *data) |
bool | signalsBlocked () const |
Returns true if signals are blocked; otherwise returns false. More... | |
int | startTimer (int interval) |
Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More... | |
QThread * | thread () const |
Returns the thread in which the object lives. More... | |
QObjectUserData * | userData (uint id) const |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. More... | |
Properties | |
QPacketProtocolPrivate * | d |
Additional Inherited Members | |
Public Slots inherited from QObject | |
void | deleteLater () |
Schedules this object for deletion. More... | |
Static Public Functions inherited from QObject | |
static bool | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More... | |
static bool | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
Disconnects signal in object sender from method in object receiver. More... | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static uint | registerUserData () |
static QString | tr (const char *sourceText, const char *comment=0, int n=-1) |
static QString | trUtf8 (const char *sourceText, const char *comment=0, int n=-1) |
Static Public Variables inherited from QObject | |
static const QMetaObject | staticMetaObject |
This variable stores the meta-object for the class. More... | |
Protected Functions inherited from QObject | |
virtual void | childEvent (QChildEvent *) |
This event handler can be reimplemented in a subclass to receive child events. More... | |
virtual void | connectNotify (const char *signal) |
This virtual function is called when something has been connected to signal in this object. More... | |
virtual void | customEvent (QEvent *) |
This event handler can be reimplemented in a subclass to receive custom events. More... | |
virtual void | disconnectNotify (const char *signal) |
This virtual function is called when something has been disconnected from signal in this object. More... | |
QObject (QObjectPrivate &dd, QObject *parent=0) | |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. More... | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More... | |
int | senderSignalIndex () const |
virtual void | timerEvent (QTimerEvent *) |
This event handler can be reimplemented in a subclass to receive timer events for the object. More... | |
Protected Variables inherited from QObject | |
QScopedPointer< QObjectData > | d_ptr |
Static Protected Variables inherited from QObject | |
static const QMetaObject | staticQtMetaObject |
Related Functions inherited from QObject | |
T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QRegExp ®Exp)() |
T * | qobject_cast (QObject *object) |
QObjectList | |
void * | qt_find_obj_child (QObject *parent, const char *type, const QString &name) |
Returns a pointer to the object named name that inherits type and with a given parent. More... | |
The QPacketProtocol class encapsulates communicating discrete packets across fragmented IO channels, such as TCP sockets.
QPacketProtocol makes it simple to send arbitrary sized data "packets" across fragmented transports such as TCP and UDP.
As transmission boundaries are not respected, sending packets over protocols like TCP frequently involves "stitching" them back together at the receiver. QPacketProtocol makes this easier by performing this task for you. Packet data sent using QPacketProtocol is prepended with a 4-byte size header allowing the receiving QPacketProtocol to buffer the packet internally until it has all been received. QPacketProtocol does not perform any sanity checking on the size or on the data, so this class should only be used in prototyping or trusted situations where DOS attacks are unlikely.
QPacketProtocol does not perform any communications itself. Instead it can operate on any QIODevice that supports the QIODevice::readyRead() signal. A logical "packet" is encapsulated by the companion QPacket class. The following example shows two ways to send data using QPacketProtocol. The transmitted data is equivalent in both.
Likewise, the following shows how to read data from QPacketProtocol, assuming that the QPacketProtocol::readyRead() signal has been emitted.
Definition at line 62 of file qpacketprotocol_p.h.
Construct a QPacketProtocol instance that works on dev with the specified parent.
Definition at line 234 of file qpacketprotocol.cpp.
|
virtual |
Destroys the QPacketProtocol instance.
Definition at line 243 of file qpacketprotocol.cpp.
void QPacketProtocol::clear | ( | ) |
QIODevice * QPacketProtocol::device | ( | ) |
Return the QIODevice passed to the QPacketProtocol constructor.
Definition at line 386 of file qpacketprotocol.cpp.
|
signal |
A packet larger than the maximum allowable packet size was received.
The packet will be discarded and, as it indicates corruption in the protocol, no further packets will be received.
qint32 QPacketProtocol::maximumPacketSize | ( | ) | const |
Returns the maximum packet size allowed.
By default this is 2,147,483,647 bytes.
If a packet claiming to be larger than the maximum packet size is received, the QPacketProtocol::invalidPacket() signal is emitted.
Definition at line 256 of file qpacketprotocol.cpp.
qint64 QPacketProtocol::packetsAvailable | ( | ) | const |
Returns the number of received packets yet to be read.
Definition at line 314 of file qpacketprotocol.cpp.
Referenced by QDeclarativeDebugConnectionPrivate::readyRead().
|
signal |
Emitted each time a packet is completing written to the device.
This signal may be used for communications flow control.
QPacket QPacketProtocol::read | ( | ) |
Return the next unread packet, or an invalid QPacket instance if no packets are available.
This method does NOT block.
Definition at line 331 of file qpacketprotocol.cpp.
Referenced by QDeclarativeDebugConnectionPrivate::readyRead().
|
signal |
Emitted whenever a new packet is received.
Applications may use QPacketProtocol::read() to retrieve this packet.
QPacketAutoSend QPacketProtocol::send | ( | ) |
Returns a streamable object that is transmitted on destruction.
For example
will send a packet containing "Hello world" and 123. To construct more complex packets, explicitly construct a QPacket instance.
Definition at line 283 of file qpacketprotocol.cpp.
Referenced by QDeclarativeDebugConnectionPrivate::advertisePlugins(), QDeclarativeDebugConnectionPrivate::connected(), and QPacketAutoSend::~QPacketAutoSend().
void QPacketProtocol::send | ( | const QPacket & | packet | ) |
Transmit the packet.
Definition at line 296 of file qpacketprotocol.cpp.
bool QPacketProtocol::waitForReadyRead | ( | int | msecs = 3000 | ) |
This function locks until a new packet is available for reading and the QIODevice::readyRead() signal has been emitted.
The function will timeout after msecs milliseconds; the default timeout is 30000 milliseconds.
The function returns true if the readyRead() signal is emitted and there is new data available for reading; otherwise it returns false (if an error occurred or the operation timed out).
Definition at line 365 of file qpacketprotocol.cpp.
|
private |
Definition at line 90 of file qpacketprotocol_p.h.
Referenced by clear(), device(), maximumPacketSize(), packetsAvailable(), read(), send(), setMaximumPacketSize(), and waitForReadyRead().