Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QHttp2Stream Class Reference

\inmodule QtNetwork More...

#include <qhttp2connection_p.h>

+ Inheritance diagram for QHttp2Stream:
+ Collaboration diagram for QHttp2Stream:

Public Types

enum class  State {
  Idle , ReservedRemote , Open , HalfClosedLocal ,
  HalfClosedRemote , Closed
}
 

Public Slots

bool sendRST_STREAM (Http2::Http2Error errorCode)
 Sends a RST_STREAM frame with the given errorCode.
 
bool sendHEADERS (const HPack::HttpHeader &headers, bool endStream, quint8 priority=DefaultPriority)
 Sends a HEADERS frame with the given headers and priority.
 
bool sendDATA (const QByteArray &payload, bool endStream)
 Sends a DATA frame with the bytes obtained from payload.
 
bool sendDATA (QIODevice *device, bool endStream)
 Sends a DATA frame with the bytes obtained from device.
 
bool sendDATA (QNonContiguousByteDevice *device, bool endStream)
 Sends a DATA frame with the bytes obtained from device.
 
void sendWINDOW_UPDATE (quint32 delta)
 Sends a WINDOW_UPDATE frame with the given delta.
 
- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 

Signals

void headersReceived (const HPack::HttpHeader &headers, bool endStream)
 This signal is emitted when the remote peer has sent a HEADERS frame, and potentially some CONTINUATION frames, ending with the END_HEADERS flag to this stream.
 
void headersUpdated ()
 This signal may be emitted if a new HEADERS frame was received after already processing a previous HEADERS frame.
 
void errorOccurred (Http2::Http2Error errorCode, const QString &errorString)
 This signal is emitted when the stream has encountered an error.
 
void stateChanged (QHttp2Stream::State newState)
 This signal is emitted when the state of the stream changes.
 
void promisedStreamReceived (quint32 newStreamID)
 This signal is emitted when the remote peer has promised a new stream with the given newStreamID.
 
void uploadBlocked ()
 This signal is emitted when the stream is unable to send more data because the remote peer's receive window is full.
 
void dataReceived (const QByteArray &data, bool endStream)
 This signal is emitted when the stream has received a DATA frame from the remote peer.
 
void rstFrameRecived (quint32 errorCode)
 
void bytesWritten (qint64 bytesWritten)
 This signal is emitted when the stream has written bytesWritten bytes to the network.
 
void uploadDeviceError (const QString &errorString)
 This signal is emitted if the upload device encounters an error while sending data.
 
void uploadFinished ()
 This signal is emitted when the stream has finished sending all the data from the upload device.
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 ~QHttp2Stream () noexcept
 
quint32 streamID () const noexcept
 Returns the stream ID of this stream.
 
bool isUploadBlocked () const noexcept
 Returns true if the stream is currently unable to send more data because the remote peer's receive window is full.
 
bool isUploadingDATA () const noexcept
 Returns true if the stream is currently sending DATA frames.
 
State state () const noexcept
 Returns the current state of the stream.
 
bool isActive () const noexcept
 Returns true if the stream has been opened and is not yet closed.
 
bool isPromisedStream () const noexcept
 Returns true if the stream was promised by the remote peer.
 
bool wasReset () const noexcept
 Returns true if the stream was reset by the remote peer.
 
bool wasResetbyPeer () const noexcept
 
quint32 RST_STREAMCodeReceived () const noexcept
 
quint32 RST_STREAMCodeSent () const noexcept
 
HPack::HttpHeader receivedHeaders () const noexcept
 Returns the headers received from the remote peer, if any.
 
QByteDataBuffer downloadBuffer () const noexcept
 Returns the buffer containing the data received from the remote peer.
 
QByteDataBuffer takeDownloadBuffer () noexcept
 
void clearDownloadBuffer ()
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) 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.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
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.
 

Static Public Attributes

static constexpr quint8 DefaultPriority = 127
 

Friends

class QHttp2Connection
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

\inmodule QtNetwork

The QHttp2Stream class represents a single HTTP/2 stream. Must be created by QHttp2Connection.

See also
QHttp2Connection

Definition at line 93 of file qhttp2connection_p.h.

Member Enumeration Documentation

◆ State

enum class QHttp2Stream::State
strong
Enumerator
Idle 
ReservedRemote 
Open 
HalfClosedLocal 
HalfClosedRemote 
Closed 

Definition at line 99 of file qhttp2connection_p.h.

Constructor & Destructor Documentation

◆ ~QHttp2Stream()

QHttp2Stream::~QHttp2Stream ( )
noexcept

Definition at line 44 of file qhttp2connection.cpp.

Member Function Documentation

◆ bytesWritten

void QHttp2Stream::bytesWritten ( qint64 bytesWritten)
signal

This signal is emitted when the stream has written bytesWritten bytes to the network.

◆ clearDownloadBuffer()

void QHttp2Stream::clearDownloadBuffer ( )
inline

Definition at line 124 of file qhttp2connection_p.h.

◆ dataReceived

void QHttp2Stream::dataReceived ( const QByteArray & data,
bool endStream )
signal

This signal is emitted when the stream has received a DATA frame from the remote peer.

The data parameter contains the payload of the frame, and the endStream parameter is true if the END_STREAM flag was set.

See also
downloadBuffer()

◆ downloadBuffer()

QByteDataBuffer QHttp2Stream::downloadBuffer ( ) const
inlinenoexcept

Returns the buffer containing the data received from the remote peer.

Definition at line 122 of file qhttp2connection_p.h.

◆ errorOccurred

void QHttp2Stream::errorOccurred ( Http2::Http2Error errorCode,
const QString & errorString )
signal

This signal is emitted when the stream has encountered an error.

The errorCode parameter is the HTTP/2 error code, and the errorString parameter is a human-readable description of the error.

See also
https://www.rfc-editor.org/rfc/rfc7540#section-7

◆ headersReceived

void QHttp2Stream::headersReceived ( const HPack::HttpHeader & headers,
bool endStream )
signal

This signal is emitted when the remote peer has sent a HEADERS frame, and potentially some CONTINUATION frames, ending with the END_HEADERS flag to this stream.

The headers are internally combined and decompressed, and are accessible through the headers parameter. If the END_STREAM flag was set, the endStream parameter will be true, indicating that the peer does not intend to send any more frames on this stream.

See also
receivedHeaders()

◆ headersUpdated

void QHttp2Stream::headersUpdated ( )
signal

This signal may be emitted if a new HEADERS frame was received after already processing a previous HEADERS frame.

See also
headersReceived(), receivedHeaders()

◆ isActive()

bool QHttp2Stream::isActive ( ) const
inlinenoexcept

Returns true if the stream has been opened and is not yet closed.

Definition at line 112 of file qhttp2connection_p.h.

◆ isPromisedStream()

bool QHttp2Stream::isPromisedStream ( ) const
inlinenoexcept

Returns true if the stream was promised by the remote peer.

Definition at line 113 of file qhttp2connection_p.h.

◆ isUploadBlocked()

bool QHttp2Stream::isUploadBlocked ( ) const
noexcept

Returns true if the stream is currently unable to send more data because the remote peer's receive window is full.

Definition at line 505 of file qhttp2connection.cpp.

◆ isUploadingDATA()

bool QHttp2Stream::isUploadingDATA ( ) const
inlinenoexcept

Returns true if the stream is currently sending DATA frames.

Definition at line 110 of file qhttp2connection_p.h.

◆ promisedStreamReceived

void QHttp2Stream::promisedStreamReceived ( quint32 newStreamID)
signal

This signal is emitted when the remote peer has promised a new stream with the given newStreamID.

See also
QHttp2Connection::promisedStream()

◆ receivedHeaders()

HPack::HttpHeader QHttp2Stream::receivedHeaders ( ) const
inlinenoexcept

Returns the headers received from the remote peer, if any.

Definition at line 120 of file qhttp2connection_p.h.

◆ RST_STREAMCodeReceived()

quint32 QHttp2Stream::RST_STREAMCodeReceived ( ) const
inlinenoexcept

Definition at line 117 of file qhttp2connection_p.h.

◆ RST_STREAMCodeSent()

quint32 QHttp2Stream::RST_STREAMCodeSent ( ) const
inlinenoexcept

Definition at line 118 of file qhttp2connection_p.h.

◆ rstFrameRecived

void QHttp2Stream::rstFrameRecived ( quint32 errorCode)
signal

◆ sendDATA [1/3]

bool QHttp2Stream::sendDATA ( const QByteArray & payload,
bool endStream )
slot

Sends a DATA frame with the bytes obtained from payload.

This function will send as many DATA frames as needed to send all the data from payload. If endStream is true, the END_STREAM flag will be set.

Returns {true} if we were able to {start} writing to the socket, false otherwise. Note that even though we started writing, the socket may error out before this function returns. Call state() for the new status.

Definition at line 283 of file qhttp2connection.cpp.

◆ sendDATA [2/3]

bool QHttp2Stream::sendDATA ( QIODevice * device,
bool endStream )
slot

Sends a DATA frame with the bytes obtained from device.

This function will send as many DATA frames as needed to send all the data from device. If endStream is true, the END_STREAM flag will be set.

device must stay alive for the duration of the upload. A way of doing this is to heap-allocate the device and parent it to the QHttp2Stream.

Returns {true} if we were able to {start} writing to the socket, false otherwise. Note that even though we started writing, the socket may error out before this function returns. Call state() for the new status.

Definition at line 310 of file qhttp2connection.cpp.

◆ sendDATA [3/3]

bool QHttp2Stream::sendDATA ( QNonContiguousByteDevice * device,
bool endStream )
slot

Sends a DATA frame with the bytes obtained from device.

This function will send as many DATA frames as needed to send all the data from device. If endStream is true, the END_STREAM flag will be set.

device must stay alive for the duration of the upload. A way of doing this is to heap-allocate the device and parent it to the QHttp2Stream.

Returns {true} if we were able to {start} writing to the socket, false otherwise. Note that even though we started writing, the socket may error out before this function returns. Call state() for the new status.

Definition at line 346 of file qhttp2connection.cpp.

◆ sendHEADERS

bool QHttp2Stream::sendHEADERS ( const HPack::HttpHeader & headers,
bool endStream,
quint8 priority = DefaultPriority )
slot

Sends a HEADERS frame with the given headers and priority.

If endStream is true, the END_STREAM flag will be set, and the stream will be closed for future writes. If the headers are too large, or the stream is not in the correct state, this function will return false. Otherwise, it will return true.

Definition at line 525 of file qhttp2connection.cpp.

◆ sendRST_STREAM

bool QHttp2Stream::sendRST_STREAM ( Http2::Http2Error errorCode)
slot

Sends a RST_STREAM frame with the given errorCode.

This closes the stream for both sides, any further frames will be dropped.

Returns false if the stream is closed or idle, also if it fails to send the RST_STREAM frame. Otherwise, returns true.

Definition at line 249 of file qhttp2connection.cpp.

◆ sendWINDOW_UPDATE

void QHttp2Stream::sendWINDOW_UPDATE ( quint32 delta)
slot

Sends a WINDOW_UPDATE frame with the given delta.

This increases our receive window size for this stream, allowing the remote peer to send more data.

Definition at line 574 of file qhttp2connection.cpp.

◆ state()

State QHttp2Stream::state ( ) const
inlinenoexcept

Returns the current state of the stream.

See also
stateChanged()

Definition at line 111 of file qhttp2connection_p.h.

◆ stateChanged

void QHttp2Stream::stateChanged ( QHttp2Stream::State newState)
signal

This signal is emitted when the state of the stream changes.

The newState parameter is the new state of the stream.

Examples of this is sending or receiving a frame with the END_STREAM flag. This will transition the stream to the HalfClosedLocal or HalfClosedRemote state, respectively.

See also
state()

◆ streamID()

quint32 QHttp2Stream::streamID ( ) const
inlinenoexcept

Returns the stream ID of this stream.

Definition at line 106 of file qhttp2connection_p.h.

◆ takeDownloadBuffer()

QByteDataBuffer QHttp2Stream::takeDownloadBuffer ( )
inlinenoexcept

Definition at line 123 of file qhttp2connection_p.h.

◆ uploadBlocked

void QHttp2Stream::uploadBlocked ( )
signal

This signal is emitted when the stream is unable to send more data because the remote peer's receive window is full.

This is mostly intended for diagnostics as there is no expectation that the user can do anything to react to this.

◆ uploadDeviceError

void QHttp2Stream::uploadDeviceError ( const QString & errorString)
signal

This signal is emitted if the upload device encounters an error while sending data.

The errorString parameter is a human-readable description of the error.

◆ uploadFinished

void QHttp2Stream::uploadFinished ( )
signal

This signal is emitted when the stream has finished sending all the data from the upload device.

If the END_STREAM flag was set for sendDATA() then the stream will be closed for further writes before this signal is emitted.

◆ wasReset()

bool QHttp2Stream::wasReset ( ) const
inlinenoexcept

Returns true if the stream was reset by the remote peer.

Definition at line 114 of file qhttp2connection_p.h.

◆ wasResetbyPeer()

bool QHttp2Stream::wasResetbyPeer ( ) const
inlinenoexcept

Definition at line 116 of file qhttp2connection_p.h.

Friends And Related Symbol Documentation

◆ QHttp2Connection

friend class QHttp2Connection
friend

Definition at line 155 of file qhttp2connection_p.h.

Member Data Documentation

◆ DefaultPriority

quint8 QHttp2Stream::DefaultPriority = 127
staticconstexpr

Definition at line 101 of file qhttp2connection_p.h.


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