cutelyst 4.8.0
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
Cutelyst::Response Class Referencefinal

A Cutelyst response. More...

#include <Cutelyst/Response>

Inheritance diagram for Cutelyst::Response:

Public Types

enum  CloseCode {
  CloseCodeNormal , CloseCodeGoingAway , CloseCodeProtocolError , CloseCodeDatatypeNotSupported ,
  CloseCodeReserved1004 , CloseCodeMissingStatusCode , CloseCodeAbnormalDisconnection , CloseCodeWrongDatatype ,
  CloseCodePolicyViolated , CloseCodeTooMuchData , CloseCodeMissingExtension , CloseCodeBadOperation ,
  CloseCodeTlsHandshakeFailed
}
enum  HttpStatus {
  Continue , SwitchingProtocols , OK , Created ,
  Accepted , NonAuthoritativeInformation , NoContent , ResetContent ,
  PartialContent , MultiStatus , MultipleChoices , MovedPermanently ,
  Found , SeeOther , NotModified , UseProxy ,
  TemporaryRedirect , PermanentRedirect , BadRequest , Unauthorized ,
  PaymentRequired , Forbidden , NotFound , MethodNotAllowed ,
  NotAcceptable , ProxyAuthenticationRequired , RequestTimeout , Conflict ,
  Gone , LengthRequired , PreconditionFailed , RequestEntityTooLarge ,
  RequestURITooLong , UnsupportedMediaType , RequestedRangeNotSatisfiable , ExpectationFailed ,
  InternalServerError , NotImplemented , BadGateway , ServiceUnavailable ,
  GatewayTimeout , HTTPVersionNotSupported , BandwidthLimitExceeded
}
Public Types inherited from QObject
enum  TimerId
Public Types inherited from QIODeviceBase
enum  OpenModeFlag

Public Member Functions

virtual ~Response () override
QByteArraybody ()
QIODevicebodyDevice () const noexcept
QByteArray contentEncoding () const noexcept
qint64 contentLength () const
QByteArray contentType () const
QByteArray contentTypeCharset () const
QVariant cookie (const QByteArray &name) const
QList< QNetworkCookiecookies () const
bool hasBody () const noexcept
QByteArray header (const QByteArray &field) const noexcept
Headersheaders () noexcept
bool isFinalizedHeaders () const noexcept
bool isSequential () const noexcept override
QUrl location () const noexcept
void redirect (const QString &url, quint16 status=Found)
void redirect (const QUrl &url, quint16 status=Found)
void redirectSafe (const QUrl &url, const QUrl &fallback)
int removeCookies (const QByteArray &name)
void setBody (const QByteArray &body)
void setBody (const QString &body)
void setBody (QIODevice *body)
void setBody (QStringView body)
void setCborBody (const QByteArray &cbor)
void setCborValueBody (const QCborValue &value)
void setContentEncoding (const QByteArray &encoding)
void setContentLength (qint64 length)
void setContentType (const QByteArray &type)
void setCookie (const QNetworkCookie &cookie)
void setCookies (const QList< QNetworkCookie > &cookies)
void setHeader (const QByteArray &key, const QByteArray &value)
void setJsonArrayBody (const QJsonArray &array)
void setJsonBody (const QByteArray &json)
void setJsonBody (QStringView json)
void setJsonObjectBody (const QJsonObject &obj)
void setStatus (quint16 status) noexcept
qint64 size () const noexcept override
quint16 status () const noexcept
bool webSocketBinaryMessage (const QByteArray &message)
bool webSocketClose (quint16 code=Response::CloseCodeNormal, const QString &reason={})
bool webSocketHandshake (const QByteArray &key={}, const QByteArray &origin={}, const QByteArray &protocol={})
bool webSocketPing (const QByteArray &payload={})
bool webSocketTextMessage (const QString &message)
Public Member Functions inherited from QIODevice
 QIODevice (QObject *parent)
void aboutToClose ()
virtual bool atEnd () const const
virtual qint64 bytesAvailable () const const
virtual qint64 bytesToWrite () const const
void bytesWritten (qint64 bytes)
virtual bool canReadLine () const const
void channelBytesWritten (int channel, qint64 bytes)
void channelReadyRead (int channel)
virtual void close ()
void commitTransaction ()
int currentReadChannel () const const
int currentWriteChannel () const const
QString errorString () const const
bool getChar (char *c)
bool isOpen () const const
bool isReadable () const const
bool isTextModeEnabled () const const
bool isTransactionStarted () const const
bool isWritable () const const
virtual bool open (QIODeviceBase::OpenMode mode)
QIODeviceBase::OpenMode openMode () const const
qint64 peek (char *data, qint64 maxSize)
QByteArray peek (qint64 maxSize)
virtual qint64 pos () const const
bool putChar (char c)
qint64 read (char *data, qint64 maxSize)
QByteArray read (qint64 maxSize)
QByteArray readAll ()
int readChannelCount () const const
void readChannelFinished ()
qint64 readLine (char *data, qint64 maxSize)
QByteArray readLine (qint64 maxSize)
bool readLineInto (QByteArray *line, qint64 maxSize)
QByteArrayView readLineInto (QSpan< char > buffer)
QByteArrayView readLineInto (QSpan< std::byte > buffer)
QByteArrayView readLineInto (QSpan< uchar > buffer)
void readyRead ()
virtual bool reset ()
void rollbackTransaction ()
virtual bool seek (qint64 pos)
void setCurrentReadChannel (int channel)
void setCurrentWriteChannel (int channel)
void setTextModeEnabled (bool enabled)
qint64 skip (qint64 maxSize)
void startTransaction ()
void ungetChar (char c)
virtual bool waitForBytesWritten (int msecs)
virtual bool waitForReadyRead (int msecs)
qint64 write (const char *data)
qint64 write (const char *data, qint64 maxSize)
qint64 write (const QByteArray &data)
int writeChannelCount () const const
Public Member Functions inherited from QObject
 QObject (QObject *parent)
QBindable< QStringbindableObjectName ()
bool blockSignals (bool block)
const QObjectListchildren () const const
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
void deleteLater ()
void destroyed (QObject *obj)
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
bool disconnect (const QObject *receiver, const char *method) const const
void dumpObjectInfo () const const
void dumpObjectTree () const const
QList< QByteArraydynamicPropertyNames () const const
virtual bool event (QEvent *e)
virtual bool eventFilter (QObject *watched, QEvent *event)
findChild (QAnyStringView name, Qt::FindChildOptions options) const const
findChild (Qt::FindChildOptions options) const const
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
QList< T > findChildren (QAnyStringView name, Qt::FindChildOptions options) const const
QList< T > findChildren (Qt::FindChildOptions options) const const
bool inherits (const char *className) const const
void installEventFilter (QObject *filterObj)
bool isQmlExposed () const const
bool isQuickItemType () const const
bool isWidgetType () const const
bool isWindowType () const const
void killTimer (int id)
void killTimer (Qt::TimerId id)
virtual const QMetaObjectmetaObject () const const
bool moveToThread (QThread *targetThread)
QString objectName () const const
void objectNameChanged (const QString &objectName)
QObjectparent () const const
QVariant property (const char *name) const const
 Q_CLASSINFO (Name, Value)
 Q_EMIT Q_EMIT
 Q_ENUM (...)
 Q_ENUM_NS (...)
 Q_ENUMS (...)
 Q_FLAG (...)
 Q_FLAG_NS (...)
 Q_FLAGS (...)
 Q_GADGET Q_GADGET
 Q_GADGET_EXPORT (EXPORT_MACRO)
 Q_INTERFACES (...)
 Q_INVOKABLE Q_INVOKABLE
 Q_MOC_INCLUDE Q_MOC_INCLUDE
 Q_NAMESPACE Q_NAMESPACE
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 Q_OBJECT Q_OBJECT
 Q_PROPERTY (...)
 Q_REVISION Q_REVISION
 Q_SET_OBJECT_NAME (Object)
 Q_SIGNAL Q_SIGNAL
 Q_SIGNALS Q_SIGNALS
 Q_SLOT Q_SLOT
 Q_SLOTS Q_SLOTS
qobject_cast (const QObject *object)
qobject_cast (QObject *object)
 QT_NO_CONTEXTLESS_CONNECT QT_NO_CONTEXTLESS_CONNECT
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
void removeEventFilter (QObject *obj)
void setObjectName (const QString &name)
void setObjectName (QAnyStringView name)
void setParent (QObject *parent)
bool setProperty (const char *name, const QVariant &value)
bool setProperty (const char *name, QVariant &&value)
bool signalsBlocked () const const
int startTimer (int interval, Qt::TimerType timerType)
int startTimer (std::chrono::nanoseconds interval, Qt::TimerType timerType)
QThreadthread () const const

Protected Member Functions

 Response (const Headers &defaultHeaders, EngineRequest *conn=nullptr)
virtual qint64 readData (char *data, qint64 maxlen) override
virtual qint64 writeData (const char *data, qint64 len) override
Protected Member Functions inherited from QIODevice
virtual qint64 readLineData (char *data, qint64 maxSize)
void setErrorString (const QString &str)
void setOpenMode (QIODeviceBase::OpenMode openMode)
virtual qint64 skipData (qint64 maxSize)
Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
virtual void connectNotify (const QMetaMethod &signal)
virtual void customEvent (QEvent *event)
virtual void disconnectNotify (const QMetaMethod &signal)
bool isSignalConnected (const QMetaMethod &signal) const const
int receivers (const char *signal) const const
QObjectsender () const const
int senderSignalIndex () const const
virtual void timerEvent (QTimerEvent *event)

Friends

class Application
class Context
class ContextPrivate
class Engine
class EngineConnection

Additional Inherited Members

Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool disconnect (const QMetaObject::Connection &connection)
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
QString tr (const char *sourceText, const char *disambiguation, int n)
Public Attributes inherited from QObject
 Invalid
typedef QObjectList
Public Attributes inherited from QIODeviceBase
 Append
 ExistingOnly
 NewOnly
 NotOpen
typedef OpenMode
 ReadOnly
 ReadWrite
 Text
 Truncate
 Unbuffered
 WriteOnly
Properties inherited from QObject
 objectName

Detailed Description

A Cutelyst response contains the data created by your application that should be send back to the requesting client.

Definition at line 28 of file response.h.

Member Enumeration Documentation

◆ CloseCode

This enum type specifies the status response to be sent to the client

Definition at line 82 of file response.h.

◆ HttpStatus

This enum type specifies the status response to be sent to the client

Definition at line 34 of file response.h.

Constructor & Destructor Documentation

◆ ~Response()

Response::~Response ( )
overridevirtual

Destroys the Response object.

Definition at line 61 of file response.cpp.

◆ Response()

Response::Response ( const Headers & defaultHeaders,
EngineRequest * conn = nullptr )
explicitprotected

Member Function Documentation

◆ body()

QByteArray & Response::body ( )
nodiscard

This function returns a reference to a QByteArray which implicity sets the body device to a QBuffer, even if one was already set.

Definition at line 86 of file response.cpp.

References Response().

Referenced by Cutelyst::EngineRequest::finalizeBody(), setBody(), and setBody().

◆ bodyDevice()

QIODevice * Response::bodyDevice ( ) const
noexcept

Returns the body IO device (if any) of this response.

Definition at line 98 of file response.cpp.

References QIODevice::QIODevice(), and Response().

Referenced by Cutelyst::EngineRequest::finalizeBody().

◆ contentEncoding()

QByteArray Response::contentEncoding ( ) const
noexcept

Short for headers().contentEncoding();

See also
Headers::contentEncoding()
setContentEncoding()

Definition at line 155 of file response.cpp.

References Response().

◆ contentLength()

qint64 Response::contentLength ( ) const

Short for headers().contentLength();

See also
Headers::contentLength()
setContentLength()

Definition at line 172 of file response.cpp.

References Response().

◆ contentType()

QByteArray Response::contentType ( ) const

Short for headers().contentType();

See also
Headers::contentType()
setContentType()

Definition at line 189 of file response.cpp.

References Response().

Referenced by Cutelyst::RenderView::doExecute().

◆ contentTypeCharset()

QByteArray Response::contentTypeCharset ( ) const

Short for headers().contentTypeCharset();

See also
Headers::contentTypeCharset()

Definition at line 195 of file response.cpp.

References Response().

◆ cookie()

QVariant Response::cookie ( const QByteArray & name) const

Returns the first QNetworkCookie matching the name or a null QVariant if not found.

Definition at line 201 of file response.cpp.

References Response(), and QVariant::fromValue().

Referenced by setCookie(), and setCookies().

◆ cookies()

QList< QNetworkCookie > Response::cookies ( ) const

Returns a list of all cookies set.

Definition at line 207 of file response.cpp.

References Response().

Referenced by Cutelyst::EngineRequest::finalizeCookies(), and setCookies().

◆ hasBody()

bool Response::hasBody ( ) const
noexcept

Returns true if a body device has been defined as QByteArray or QIODevice or write() was called and it's on chunked mode.

Definition at line 79 of file response.cpp.

References Response().

Referenced by Cutelyst::RenderView::doExecute().

◆ header()

QByteArray Response::header ( const QByteArray & field) const
noexcept

Shortcut headers().header()

See also
Headers::header()

Definition at line 277 of file response.cpp.

◆ headers()

Headers & Response::headers ( )
noexcept

◆ isFinalizedHeaders()

bool Response::isFinalizedHeaders ( ) const
noexcept

Returns true if Headers are finalized (sent to the client).

Definition at line 300 of file response.cpp.

◆ isSequential()

bool Response::isSequential ( ) const
overridevirtualnoexcept

Writing to user-agent is always sequential.

Reimplemented from QIODevice.

Definition at line 306 of file response.cpp.

◆ location()

QUrl Response::location ( ) const
noexcept

Returns the HTTP location set by the redirect

Definition at line 271 of file response.cpp.

References Response(), QUrl::RemovePath, and QUrl::RemoveQuery.

Referenced by redirect().

◆ readData()

qint64 Response::readData ( char * data,
qint64 maxlen )
overrideprotectedvirtual

Reimplemented from QIODevice::readData().

Implements QIODevice.

Definition at line 26 of file response.cpp.

◆ redirect() [1/2]

void Response::redirect ( const QString & url,
quint16 status = Found )

Causes the response to redirect to the specified URL. The default status is 302. This is a convenience method that sets the Location header to the redirect destination, and then sets the response status. You will want to return false or c->detach() to interrupt the normal processing flow if you want the redirect to occur straight away.

Note
Do not give a relative URL as $url, i.e: one that is not fully qualified ("http://...", etc.) or that starts with a slash "/path/here". While it may work, it is not guaranteed to do the right thing and is not a standard behaviour. You may opt to use uriFor() or uriForAction() instead.

Definition at line 255 of file response.cpp.

◆ redirect() [2/2]

void Response::redirect ( const QUrl & url,
quint16 status = Found )

Causes the response to redirect to the specified URL. The default status is 302. This is a convenience method that sets the Location header to the redirect destination, and then sets the response status. You will want to return false or c->detach() to interrupt the normal processing flow if you want the redirect to occur straight away.

Note
Do not give a relative URL as $url, i.e: one that is not fully qualified ("http://...", etc.) or that starts with a slash "/path/here". While it may work, it is not guaranteed to do the right thing and is not a standard behaviour. You may opt to use uriFor() or uriForAction() instead.

Definition at line 233 of file response.cpp.

References Response(), QUrl::FullyEncoded, QUrl::isValid(), location(), status(), and QUrl::toEncoded().

Referenced by Cutelyst::LangSelect::fromPath().

◆ redirectSafe()

void Response::redirectSafe ( const QUrl & url,
const QUrl & fallback )

Open Redirect Vulnerability is when you get an user provided URL and redirect to it without checking if it's safe.

This can be used on login forms that receive some "redir" parameter that once logged in allows the user to go straight to that page instead of some home page.

It's then possible to receive a link like http://example.com/login?redir=http://exemple.com/login notice how both domain names are similar for malicious porpuses, once logged in it redirects to a similar login page that will pretent the auth didn't work, user might then type their credentials on that page.

This method validades that the url scheme, domain name and port are the same of the request to your server if it isn't it will send the user to fallback url that you know it's safe. If you need to redirect the user to some other domain/port validate the URL manually an use the regular

See also
redirect method instead.

Definition at line 260 of file response.cpp.

References status().

◆ removeCookies()

int Response::removeCookies ( const QByteArray & name)

Removes all cookies that matches name, returning the number of cookies removed

Definition at line 227 of file response.cpp.

References Response().

◆ setBody() [1/4]

void Response::setBody ( const QByteArray & body)

Sets a QByteArray as the response body, content length will be automatically set to it's size.

Definition at line 120 of file response.cpp.

References Response(), and body().

◆ setBody() [2/4]

void Cutelyst::Response::setBody ( const QString & body)
inline

Sets a QString as the response body, the output will be UTF-8 and content length will be automatically set to it's size.

Definition at line 430 of file response.h.

References setBody(), and QString::toUtf8().

◆ setBody() [3/4]

void Response::setBody ( QIODevice * body)

Sets an IO device as the response body, the open mode must be at least QIODevice::ReadOnly. This function takes ownership of your device deleting after the request has completed.

Definition at line 104 of file response.cpp.

References QIODevice::QIODevice(), Response(), and body().

Referenced by Cutelyst::EngineRequest::finalizeError(), Cutelyst::UA::forwardAsync(), Cutelyst::UA::forwardRequestResponse(), Cutelyst::CuteleeView::render(), setBody(), and setBody().

◆ setBody() [4/4]

void Cutelyst::Response::setBody ( QStringView body)
inline

Sets a QString as the response body, the output will be UTF-8 and content length will be automatically set to it's size.

Definition at line 435 of file response.h.

References setBody(), and QStringView::toUtf8().

◆ setCborBody()

void Response::setCborBody ( const QByteArray & cbor)

Sets a CBOR data as the response body, this method is provided for convenience as it sets the content-type to application/cbor.

Definition at line 126 of file response.cpp.

References Response().

Referenced by setCborValueBody().

◆ setCborValueBody()

void Response::setCborValueBody ( const QCborValue & value)

Sets a CBOR value without transformation as the response body, this method is provided for convenience as it sets the content-type to application/json.

Definition at line 133 of file response.cpp.

References setCborBody().

◆ setContentEncoding()

void Cutelyst::Response::setContentEncoding ( const QByteArray & encoding)

Short for headers().setContentEncoding(encoding);

See also
Headers::setContentEncoding()
contentEncoding()

Definition at line 161 of file response.cpp.

References Response().

◆ setContentLength()

void Response::setContentLength ( qint64 length)

Short for headers().setContentLength(length);

See also
Headers::setContentLength()
contentLength()

Definition at line 178 of file response.cpp.

References Response().

◆ setContentType()

void Cutelyst::Response::setContentType ( const QByteArray & type)
inline

◆ setCookie()

void Response::setCookie ( const QNetworkCookie & cookie)

Defines a QNetworkCookie to be sent to the user-agent, if a previous cookie->name() was set it will be replaced.

Definition at line 213 of file response.cpp.

References Response(), and cookie().

◆ setCookies()

void Response::setCookies ( const QList< QNetworkCookie > & cookies)

Defines a list of QNetworkCookie to be sent to the user-agent, all previous matches to cookie->name() will be preserved.

Definition at line 219 of file response.cpp.

References Response(), cookie(), and cookies().

◆ setHeader()

void Response::setHeader ( const QByteArray & key,
const QByteArray & value )

Shortcut headers().setHeader()

See also
Headers::setHeader()

Definition at line 283 of file response.cpp.

Referenced by Cutelyst::ViewJson::render().

◆ setJsonArrayBody()

void Response::setJsonArrayBody ( const QJsonArray & array)

Sets a QJsonArray array on a QJsonDocument as the response body, using toJson(QJsonDocument::Compact) output and setting content-type to application/json.

Definition at line 150 of file response.cpp.

References QJsonDocument::Compact, and setJsonBody().

◆ setJsonBody() [1/2]

void Response::setJsonBody ( const QByteArray & json)

Sets a JSON string as the response body, this method is provided for convenience as it sets the content-type to application/json.

Definition at line 138 of file response.cpp.

References Response().

◆ setJsonBody() [2/2]

void Cutelyst::Response::setJsonBody ( QStringView json)
inline

Sets a JSON string as the response body, this method is provided for convenience as it sets the content-type to application/json.

Definition at line 440 of file response.h.

References setJsonBody(), and QStringView::toUtf8().

Referenced by setJsonArrayBody(), setJsonBody(), and setJsonObjectBody().

◆ setJsonObjectBody()

void Response::setJsonObjectBody ( const QJsonObject & obj)

Sets a QJsonObject obj on a QJsonDocument as the response body, using toJson(QJsonDocument::Compact) output and setting content-type to application/json.

Definition at line 145 of file response.cpp.

References QJsonDocument::Compact, and setJsonBody().

◆ setStatus()

void Response::setStatus ( quint16 status)
noexcept

◆ size()

qint64 Response::size ( ) const
overridevirtualnoexcept

Reimplemented from QIODevice::readData().

Reimplemented from QIODevice.

Definition at line 311 of file response.cpp.

References Response().

Referenced by Cutelyst::EngineRequest::finalizeHeaders().

◆ status()

quint16 Response::status ( ) const
noexcept

The current response code status.

Definition at line 67 of file response.cpp.

References Response().

Referenced by Cutelyst::RenderView::doExecute(), Cutelyst::EngineRequest::finalizeHeaders(), redirect(), redirectSafe(), and setStatus().

◆ webSocketBinaryMessage()

bool Response::webSocketBinaryMessage ( const QByteArray & message)

Sends a WebSocket binary message.

Definition at line 337 of file response.cpp.

◆ webSocketClose()

bool Response::webSocketClose ( quint16 code = Response::CloseCodeNormal,
const QString & reason = {} )

Sends a WebSocket close frame, with both optional close code and a string reason.

Note
This method does not emit Request::webSocketClosed() signal. If you need to track when the connection was closed, the proper way is to rely on Context::destroyed() signal.

Definition at line 349 of file response.cpp.

◆ webSocketHandshake()

bool Response::webSocketHandshake ( const QByteArray & key = {},
const QByteArray & origin = {},
const QByteArray & protocol = {} )

Sends the websocket handshake, if no parameters are defined it will use header data. Returns true in case of success, false otherwise, which can be due missing support on the engine or missing the appropriate headers.

Note
Most WebSockets client doesn't handle when a call to a WebSocket endpoint ends on an HTTP authentication failure or other HTTP status that is not the update. Due that it's best to always do the proper websocket handshake and then
See also
webSocketClose() the connection, with some meaning reason.

Definition at line 323 of file response.cpp.

◆ webSocketPing()

bool Response::webSocketPing ( const QByteArray & payload = {})

Sends a WebSocket ping with an optional payload limited to 125 bytes, which will be truncated if larger.

Note
Some front-end servers will close the connection if no activity is seem, NGINX closes in 60 seconds by default, in order to avoid that, sending a ping is the best to way to keep the connection alive and to know that your client is still there.

Definition at line 343 of file response.cpp.

◆ webSocketTextMessage()

bool Response::webSocketTextMessage ( const QString & message)

Sends a WebSocket text message.

Definition at line 331 of file response.cpp.

References Response().

◆ writeData()

qint64 Response::writeData ( const char * data,
qint64 len )
overrideprotectedvirtual

Writes data to the response body, this will flush all response headers first and will enter in chunked mode if Transfer-Encoding header is set to chunked or if no content length is set and status is not 1xx or 204 (NoContent) or 304 (NotModified)

Implements QIODevice.

Definition at line 33 of file response.cpp.

References Response().

◆ Application

friend class Application
friend

Definition at line 423 of file response.h.

◆ Context

friend class Context
friend

Definition at line 426 of file response.h.

◆ ContextPrivate

friend class ContextPrivate
friend

Definition at line 427 of file response.h.

◆ Engine

friend class Engine
friend

Definition at line 424 of file response.h.

◆ EngineConnection

friend class EngineConnection
friend

Definition at line 425 of file response.h.