cutelyst 3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
Cutelyst::Server Class Reference
Inheritance diagram for Cutelyst::Server:

Signals

void changed ()
void errorOccured (const QString &error)
void ready ()
void stopped ()

Public Member Functions

 Server (QObject *parent=nullptr)
 Server.
QString application () const
bool autoReload () const
int bufferSize () const
QString chdir () const
QString chdir2 () const
QString chownSocket () const
int cpuAffinity () const
int exec (Cutelyst::Application *app=nullptr)
QStringList fastcgiSocket () const
QString gid () const
quint32 http2HeaderTableSize () const
QStringList http2Socket () const
bool httpsH2 () const
QStringList httpSocket () const
QStringList httpsSocket () const
QStringList ini () const
QStringList json () const
bool lazy () const
int listenQueue () const
bool master () const
bool noInitgroups () const
void parseCommandLine (const QStringList &args)
QString pidfile () const
QString pidfile2 () const
qint64 postBuffering () const
qint64 postBufferingBufsize () const
QString processes () const
bool reusePort () const
void setApplication (const QString &application)
void setAutoReload (bool enable)
void setBufferSize (int size)
void setChdir (const QString &chdir)
void setChdir2 (const QString &chdir2)
void setChownSocket (const QString &chownSocket)
void setCpuAffinity (int value)
void setFastcgiSocket (const QStringList &fastcgiSocket)
void setGid (const QString &gid)
void setHttp2HeaderTableSize (quint32 headerTableSize)
void setHttp2Socket (const QStringList &http2Socket)
void setHttpsH2 (bool enable)
void setHttpSocket (const QStringList &httpSocket)
void setHttpsSocket (const QStringList &httpsSocket)
void setIni (const QStringList &files)
void setJson (const QStringList &files)
void setLazy (bool enable)
void setListenQueue (int size)
void setMaster (bool enable)
void setNoInitgroups (bool enable)
void setPidfile (const QString &file)
void setPidfile2 (const QString &file)
void setPostBuffering (qint64 size)
void setPostBufferingBufsize (qint64 size)
void setProcesses (const QString &process)
void setReusePort (bool enable)
void setSocketAccess (const QString &socketAccess)
void setSocketRcvbuf (int value)
void setSocketSndbuf (int value)
void setSocketTimeout (int timeout)
void setSoKeepalive (bool enable)
void setStaticMap (const QStringList &staticMap)
void setStaticMap2 (const QStringList &staticMap)
void setTcpNodelay (bool enable)
void setThreads (const QString &threads)
void setTouchReload (const QStringList &files)
void setUid (const QString &uid)
void setUmask (const QString &value)
void setUpgradeH2c (bool enable)
void setUsingFrontendProxy (bool enable)
void setWebsocketMaxSize (int value)
QString socketAccess () const
int socketRcvbuf () const
int socketSndbuf () const
int socketTimeout () const
bool soKeepalive () const
bool start (Cutelyst::Application *app=nullptr)
 This function will start the Cutelyst::Server in user application mode.
QStringList staticMap () const
QStringList staticMap2 () const
void stop ()
 Terminates the server execution, when started with start(), it does nothing when started by exec().
bool tcpNodelay () const
QString threads () const
QStringList touchReload () const
QString uid () const
QString umask () const
bool upgradeH2c () const
bool usingFrontendProxy () const
int websocketMaxSize () const
Public Member Functions inherited from QObject
 QObject (QObject *parent)
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 ()
void dumpObjectInfo () const const
void dumpObjectTree ()
void dumpObjectTree () const const
QList< QByteArraydynamicPropertyNames () const const
virtual bool event (QEvent *e)
virtual bool eventFilter (QObject *watched, QEvent *event)
findChild (const QString &name, Qt::FindChildOptions options) const const
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
bool inherits (const char *className) const const
void installEventFilter (QObject *filterObj)
bool isWidgetType () const const
bool isWindowType () const const
void killTimer (int id)
virtual const QMetaObjectmetaObject () const const
void moveToThread (QThread *targetThread)
QString objectName () const const
void objectNameChanged (const QString &objectName, QPrivateSignal)
QObjectparent () const const
QVariant property (const char *name) const const
 Q_CLASSINFO (Name, Value)
 Q_DISABLE_COPY (Class)
 Q_DISABLE_COPY_MOVE (Class)
 Q_DISABLE_MOVE (Class)
 Q_EMIT Q_EMIT
 Q_ENUM (...)
 Q_ENUM_NS (...)
 Q_ENUMS (...)
 Q_FLAG (...)
 Q_FLAG_NS (...)
 Q_FLAGS (...)
 Q_GADGET Q_GADGET
 Q_INTERFACES (...)
 Q_INVOKABLE Q_INVOKABLE
 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
qFindChild (const QObject *obj, const QString &name)
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
QList< T > qFindChildren (const QObject *obj, const QString &name)
qobject_cast (const QObject *object)
qobject_cast (QObject *object)
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
void removeEventFilter (QObject *obj)
void setObjectName (const QString &name)
void setParent (QObject *parent)
bool setProperty (const char *name, const QVariant &value)
bool signalsBlocked () const const
int startTimer (int interval, Qt::TimerType timerType)
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
QThreadthread () const const

Properties

QString application
bool auto_reload
int buffer_size
QString chdir
QString chdir2
QString chown_socket
int cpu_affinity
QStringList fastcgi_socket
QString gid
quint32 http2_header_table_size
QStringList http2_socket
QStringList http_socket
bool https_h2
QStringList https_socket
QStringList ini
QStringList json
bool lazy
int listen
bool master
bool no_initgroups
QString pidfile
QString pidfile2
qint64 post_buffering
qint64 post_buffering_bufsize
QString processes
bool reuse_port
bool so_keepalive
QString socket_access
int socket_rcvbuf
int socket_sndbuf
int socket_timeout
QStringList static_map
QStringList static_map2
bool tcp_nodelay
QString threads
QStringList touch_reload
QString uid
QString umask
bool upgrade_h2c
bool using_frontend_proxy
int websocket_max_size
Properties inherited from QObject
 objectName

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)
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
Public Attributes inherited from QObject
typedef QObjectList
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)

Detailed Description

Definition at line 22 of file server.h.

Constructor & Destructor Documentation

◆ Server()

Cutelyst::Server::Server ( QObject * parent = nullptr)
explicit
Note
When on Linux the constructor will try install our EPoll event loop, so creating this class must be done before creating a QCoreApplition or any of it's subclasses.
Parameters
parent

References QObject::QObject(), Server(), and QObject::parent().

Referenced by Server().

Member Function Documentation

◆ errorOccured

void Cutelyst::Server::errorOccured ( const QString & error)
signal

It is emitted once error occurs.

References errorOccured().

Referenced by errorOccured().

◆ exec()

int Cutelyst::Server::exec ( Cutelyst::Application * app = nullptr)

This function will start the WSGI server.

If an application is provided it will ignore the value of setApplication and/or the Application configuration in case Ini is set, meaning it won't dynamically load an Application but use this to create new instances (if the app constructor is marked as Q_INVOKABLE and threads settings are greater than 1).

It will return 0 in case of sucess.

Note
This method calls QCoreApplication::exec() internally, this is needed because when creating or recreating child process the event loop must not be running otherwise we get undefined behavior. So exit main after this function.
This method does not take ownership of application \pa appp

◆ ready

void Cutelyst::Server::ready ( )
signal

It is emitted once the server is ready.

References QObject::Q_SIGNALS(), and ready().

Referenced by ready().

◆ start()

bool Cutelyst::Server::start ( Cutelyst::Application * app = nullptr)

Use this when you would like to embed the server in an application that is able to start/stop the server at will, for example with a push button.

This method does not support forking which includes master, lazy or processes properties.

New application instances will be created if the app constructor is marked as Q_INVOKABLE and threads settings are greater than 1.

Note
This method does not take ownership of application \pa appp

◆ stopped

void Cutelyst::Server::stopped ( )
signal

It is emitted once the server shutdown is completed.

References stopped().

Referenced by stopped().

Property Documentation

◆ application

QString Cutelyst::Server::application
readwrite

Defines application file path to be loaded, an alternative is to provide the Cutelyst::Application pointer to exec()

Accessors:
application(), setApplication()

Definition at line 88 of file server.h.

◆ auto_reload

bool Cutelyst::Server::auto_reload
readwrite

Reload application if the application file is modified or touched

Accessors:
autoReload(), setAutoReload()

Definition at line 253 of file server.h.

◆ buffer_size

int Cutelyst::Server::buffer_size
readwrite

Defines the buffer size used when parsing requests

Accessors:
bufferSize(), setBufferSize()

Definition at line 279 of file server.h.

◆ chdir

QString Cutelyst::Server::chdir
readwrite

Defines directory to chdir to before application loading

Accessors:
chdir(), setChdir()

Definition at line 121 of file server.h.

◆ chdir2

QString Cutelyst::Server::chdir2
readwrite

Defines directory to chdir to after application loading

Accessors:
chdir2(), setChdir2()

Definition at line 203 of file server.h.

◆ chown_socket

QString Cutelyst::Server::chown_socket
readwrite

Defines owner of UNIX sockets.

Accessors:
chownSocket(), setChownSocket()
Note
UNIX only

Definition at line 390 of file server.h.

◆ cpu_affinity

int Cutelyst::Server::cpu_affinity
readwrite

Defines CPU affinity

Accessors:
cpuAffinity(), setCpuAffinity()
Note
UNIX only

Definition at line 408 of file server.h.

◆ fastcgi_socket

QStringList Cutelyst::Server::fastcgi_socket
readwrite

Defines how an FastCGI socket should be binded

Accessors:
fastcgiSocket(), setFastcgiSocket()

Definition at line 179 of file server.h.

◆ gid

QString Cutelyst::Server::gid
readwrite

Defines group id of the process.

Accessors:
gid(), setGid()
Note
UNIX only

Definition at line 372 of file server.h.

◆ http2_header_table_size

quint32 Cutelyst::Server::http2_header_table_size
readwrite

Defines the HTTP2 header table size (SETTINGS_HEADER_TABLE_SIZE) default value: 4096

Accessors:
http2Socket(), setHttp2Socket()

Definition at line 145 of file server.h.

◆ http2_socket

QStringList Cutelyst::Server::http2_socket
readwrite

Defines how an HTTP2 socket should be binded

Accessors:
http2Socket(), setHttp2Socket()

Definition at line 137 of file server.h.

◆ http_socket

QStringList Cutelyst::Server::http_socket
readwrite

Defines how an HTTP socket should be binded

Accessors:
httpSocket(), setHttpSocket()

Definition at line 129 of file server.h.

◆ https_h2

bool Cutelyst::Server::https_h2
readwrite

Defines if HTTPS sockect should use ALPN to negotiate HTTP/2 Defaults to false

Accessors:
http2Socket(), setHttp2Socket()

Definition at line 163 of file server.h.

◆ https_socket

QStringList Cutelyst::Server::https_socket
readwrite

Defines how an HTTPS socket should be binded

Accessors:
httpsSocket(), setHttpsSocket()

Definition at line 171 of file server.h.

◆ ini

QStringList Cutelyst::Server::ini
readwrite

Load config from ini file

Accessors:
ini(), setIni()

Definition at line 211 of file server.h.

◆ json

QStringList Cutelyst::Server::json
readwrite

Load config from JSON file

Accessors:
json(), setJson()

Definition at line 219 of file server.h.

◆ lazy

bool Cutelyst::Server::lazy
readwrite

Defines is the Application should be lazy loaded.

Accessors:
lazy(), setLazy()

Definition at line 425 of file server.h.

◆ listen

int Cutelyst::Server::listen
readwrite

Defines the socket listen queue size. This setting currently works only on Linux for TCP sockets.

Accessors:
listenQueue(), setListenQueue()

Definition at line 271 of file server.h.

◆ master

bool Cutelyst::Server::master
readwrite

Defines if a master process should be created to watch for it's child processes

Accessors:
master(), setMaster()

Definition at line 245 of file server.h.

◆ no_initgroups

bool Cutelyst::Server::no_initgroups
readwrite

Disable additional groups set via initgroups()

Accessors:
noInitgroups(), setNoInitgroups()
Note
UNIX only

Definition at line 381 of file server.h.

◆ pidfile

QString Cutelyst::Server::pidfile
readwrite

Defines the pid file to be written before privileges drop

Accessors:
pidfile(), setPidfile()

Definition at line 346 of file server.h.

◆ pidfile2

QString Cutelyst::Server::pidfile2
readwrite

Defines the pid file to be written before privileges drop

Accessors:
pidfile(), setPidfile()

Definition at line 354 of file server.h.

◆ post_buffering

qint64 Cutelyst::Server::post_buffering
readwrite

Defines the maximum buffer size of POST request, if a request has a content length that is bigger than the post buffer size a temporary file is created instead

Accessors:
postBuffering(), setPostBuffering()

Definition at line 288 of file server.h.

◆ post_buffering_bufsize

qint64 Cutelyst::Server::post_buffering_bufsize
readwrite

Defines the buffer size when reading a POST request

Accessors:
postBufferingBufsize(), setPostBufferingBufsize()

Definition at line 296 of file server.h.

◆ processes

QString Cutelyst::Server::processes
readwrite

Defines the number of processes to use, if set to "auto" the ideal processes count is used

Accessors:
threads(), setThreads()
Note
UNIX only

Definition at line 113 of file server.h.

◆ reuse_port

bool Cutelyst::Server::reuse_port
readwrite

Enable SO_REUSEPORT for the sockets

Accessors:
reusePort(), setReusePort()
Note
Linux only

Definition at line 417 of file server.h.

◆ so_keepalive

bool Cutelyst::Server::so_keepalive
readwrite

Enable SO_KEEPALIVE for the sockets

Accessors:
soKeepalive(), setSoKeepalive()

Definition at line 312 of file server.h.

◆ socket_access

QString Cutelyst::Server::socket_access
readwrite

Defines the file permissions of a local socket, u = user, g = group, o = others

Accessors:
socketAccess(), setSocketAccess()

Definition at line 187 of file server.h.

◆ socket_rcvbuf

int Cutelyst::Server::socket_rcvbuf
readwrite

Sets the socket receive buffer size in bytes at the OS level. This maps to the SO_RCVBUF socket option

Accessors:
socketRcvbuf(), setSocketRcvbuf()

Definition at line 330 of file server.h.

◆ socket_sndbuf

int Cutelyst::Server::socket_sndbuf
readwrite

Sets the socket send buffer size in bytes at the OS level. This maps to the SO_SNDBUF socket option

Accessors:
socketSndbuf(), setSocketSndbuf()

Definition at line 321 of file server.h.

◆ socket_timeout

int Cutelyst::Server::socket_timeout
readwrite

Defines set internal socket timeout

Accessors:
socketTimeout(), setSocketTimeout()

Definition at line 195 of file server.h.

◆ static_map

QStringList Cutelyst::Server::static_map
readwrite

Map the mountpoint to static directory (or file)

Accessors:
staticMap(), setStaticMap()

Definition at line 227 of file server.h.

◆ static_map2

QStringList Cutelyst::Server::static_map2
readwrite

Map the mountpoint to static directory (or file), completely appending the requested resource to the docroot

Accessors:
staticMap2(), setStaticMap2()

Definition at line 236 of file server.h.

◆ tcp_nodelay

bool Cutelyst::Server::tcp_nodelay
readwrite

Enable TCP NODELAY on each request

Accessors:
tcpNodelay(), setTcpNodelay()

Definition at line 304 of file server.h.

◆ threads

QString Cutelyst::Server::threads
readwrite

Defines the number of threads to use, if set to "auto" the ideal thread count is used

Accessors:
threads(), setThreads()

A new thread is only created when > "2" or if "auto" reports more than 1 core, when the number of threads is 2 or more a new thread is not created for the worker 0, it's this way to save allocating a new Application as we already have our current thread.

If it's desired to not have the Server running on the GUI (or current) thread for example, the Server must be moved to a new thread manually.

Definition at line 104 of file server.h.

◆ touch_reload

QStringList Cutelyst::Server::touch_reload
readwrite

Reload application if the specified file is modified or touched

Accessors:
touchReload(), setTouchReload()

Definition at line 261 of file server.h.

◆ uid

QString Cutelyst::Server::uid
readwrite

Defines user id of the process.

Accessors:
uid(), setUid()
Note
UNIX only

Definition at line 363 of file server.h.

◆ umask

QString Cutelyst::Server::umask
readwrite

Defines file mode creation mask

Accessors:
umask(), setUmask()
Note
UNIX only

Definition at line 399 of file server.h.

◆ upgrade_h2c

bool Cutelyst::Server::upgrade_h2c
readwrite

Defines if an HTTP/1 connection can be upgraded to H2C (HTTP 2 Clear Text) Defaults to false

Accessors:
http2Socket(), setHttp2Socket()

Definition at line 154 of file server.h.

◆ using_frontend_proxy

bool Cutelyst::Server::using_frontend_proxy
readwrite

Defines if a reverse proxy operates in front of this application server. If enabled, parses the http headers X-Forwarded-For, X-Forwarded-Host and X-Forwarded-Proto and uses this info to update Cutelyst::EngineRequest

Accessors:
usingFrontendProxy(), setUsingFrontendProxy()

Definition at line 435 of file server.h.

◆ websocket_max_size

int Cutelyst::Server::websocket_max_size
readwrite

Sets the maximum allowed size of websocket messages (in Kbytes, default 1024)

Accessors:
websocketMaxSize(), setWebsocketMaxSize()

Definition at line 338 of file server.h.