Cutelyst  1.5.0
Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
Cutelyst::Application Class Reference

The Cutelyst Application. More...

#include <Cutelyst/Application>

Inheritance diagram for Cutelyst::Application:
Inheritance graph
[legend]

Signals

void afterDispatch (Context *c)
 
void beforeDispatch (Context *c)
 
void beforePrepareAction (Context *c, bool *skipMethod)
 
void postForked (Application *app)
 
void preForked (Application *app)
 

Public Member Functions

 Application (QObject *parent=nullptr)
 
void addTranslator (const QLocale &locale, QTranslator *translator)
 
void addTranslator (const QString &locale, QTranslator *translator)
 
void addTranslators (const QLocale &locale, const QVector< QTranslator * > &translators)
 
QVariant config (const QString &key, const QVariant &defaultValue=QVariant()) const
 
QVariantMap config () const
 
QVector< Controller * > controllers () const
 
ComponentcreateComponentPlugin (const QString &name, QObject *parent=nullptr)
 
Dispatcherdispatcher () const
 
QVector< DispatchType * > dispatchers () const
 
Engineengine () const
 
bool inited () const
 
QString pathTo (const QStringList &path) const
 
QString translate (const QLocale &locale, const char *context, const char *sourceText, const char *disambiguation=nullptr, int n=-1) const
 
Viewview (const QString &name=QString()) const
 

Static Public Member Functions

static const char * cutelystVersion ()
 

Protected Member Functions

HeadersdefaultHeaders ()
 
bool enginePostFork ()
 
void handleRequest (Request *req)
 
virtual bool init ()
 
virtual bool postFork ()
 
bool registerController (Controller *controller)
 
bool registerDispatcher (DispatchType *dispatcher)
 
bool registerPlugin (Plugin *plugin)
 
bool registerView (View *view)
 
void setConfig (const QString &key, const QVariant &value)
 
bool setup (Engine *engine)
 

Protected Attributes

ApplicationPrivate * d_ptr
 

Friends

class Engine
 

Detailed Description

This is the main class of a Cutelyst appplication

Definition at line 55 of file application.h.

Constructor & Destructor Documentation

Cutelyst::Application::Application ( QObject *  parent = nullptr)
explicit

The constructor is used to setup the class configuration, subclasses should only use this for objects that do not require configuration to be ready.

A Web Engine will instantiate your application through this class, next it will load the settings file, and in the end it will call init() which is where your application should do it's own setup.

Warning
DO NOT register your controllers, plugins or anything that might want to use config() in here, do that in init()

Member Function Documentation

void Cutelyst::Application::addTranslator ( const QLocale &  locale,
QTranslator *  translator 
)

Adds a translator for the specified locale.

You can add multiple translators for different application parts for every supported locale. The installed translators will then be used by Context::translate() (what itself will use Application::translate()) to translate strings according to the locale set by Context::setLocale().

Usage example:
bool MyCutelystApp::init()
{
// ...
auto trans = new QTranslator(this);
QLocale deDE(QLocale::German, QLocale::Germany);
if (trans->load(deDE, QStringLiteral("mycutelystapp"), QStringLiteral("."), QStringLiteral("/usr/share/mycutelystapp/l10n")) {
addTranslator(deDE, trans);
}
// ...
}
Since
Cutelyst 1.5.0
void Cutelyst::Application::addTranslator ( const QString &  locale,
QTranslator *  translator 
)

Adds a translator for the specified locale.

The locale string has to be parseable by QLocale.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Since
Cutelyst 1.5.0
void Cutelyst::Application::addTranslators ( const QLocale &  locale,
const QVector< QTranslator * > &  translators 
)

Adds multiple translators for the specified locale.

See also
addTranslator()
Since
Cutelyst 1.5.0
void Cutelyst::Application::afterDispatch ( Context c)
signal

This signal is emitted right after the Action found by the dispatcher got executed.

void Cutelyst::Application::beforeDispatch ( Context c)
signal

This signal is emitted right after the Dispatcher returns the Action that will be executed.

void Cutelyst::Application::beforePrepareAction ( Context c,
bool *  skipMethod 
)
signal

This signal is emitted before the Dispatcher is called to find an action. It's useful if you need to intercept requests before they are dispached. Always check skipMethod and return if it's true. In case you want to stop further processing set skipMethod to true.

QVariant Cutelyst::Application::config ( const QString &  key,
const QVariant &  defaultValue = QVariant() 
) const

Returns application config specified by key, with a possible default value.

QVariantMap Cutelyst::Application::config ( ) const

User configuration for the application

Returns
A variant hash with configuration settings
QVector<Controller *> Cutelyst::Application::controllers ( ) const

Returns a list with all registered controllers.

The list might only be complete after application has been setup.

Component* Cutelyst::Application::createComponentPlugin ( const QString &  name,
QObject *  parent = nullptr 
)

Tries to load a plugin in Cutelyst default plugin directory with parent as it's parent. A nullptr is returned in case of failure.

static const char* Cutelyst::Application::cutelystVersion ( )
static

Returns cutelyst version.

Headers& Cutelyst::Application::defaultHeaders ( )
protected

This is the HTTP default response headers that each request gets

Do not change it after the application has started.

Dispatcher* Cutelyst::Application::dispatcher ( ) const

Returns the dispatcher class.

QVector<DispatchType *> Cutelyst::Application::dispatchers ( ) const

Returns a list with all registered dispachers.

The list might only be complete after application has been setup.

Engine* Cutelyst::Application::engine ( ) const

Returns current engine that is generating requests.

virtual bool Cutelyst::Application::init ( )
protectedvirtual

Do your application initialization here, if your application should not proceed log some information that might help on debuggin and return false

For example if your application only works with PostgeSQL and the Qt driver is not available it makes sense to fail here. However you should not initialize resouces that cannot be shared among process.

See also
postFork
Returns
true if your application was successfuly initted
bool Cutelyst::Application::inited ( ) const

Returns true if the application has been inited.

QString Cutelyst::Application::pathTo ( const QStringList &  path) const

Merges path with config("HOME") and returns a QDir object.

virtual bool Cutelyst::Application::postFork ( )
protectedvirtual

This method is called after the engine forks

After the web engine forks itself it will call this function so that you can initialize resources that can't be shared with the parent process, namely sockets and file descriptors.

A good example of usage of this function is when openning a connection to the database which can't be shared with other process and should probably make this function return false if it fails to open.

Default implementation returns true.

Returns
False if the engine should not use this process
void Cutelyst::Application::postForked ( Application app)
signal

This signal is emitted after before

See also
postFork() is called.
void Cutelyst::Application::preForked ( Application app)
signal

This signal is emitted right after application has been setup and before application forks and

See also
postFork() is called.
bool Cutelyst::Application::registerController ( Controller controller)
protected

This method registers a Controller class which is responsible for handlying Requests, since they are reused between multiple requests beaware of not storing data there, instead you might want to use a session plugin or the stash.

Parameters
controllerthe Controller class
Returns
true if succeeded
bool Cutelyst::Application::registerDispatcher ( DispatchType dispatcher)
protected

Registers a custom DispatchType, if none is registered all the built-in dispatchers types will be registered

bool Cutelyst::Application::registerPlugin ( Plugin plugin)
protected

Registers a global plugin ie one that doesn't need to be created explicity for a single request and returns true on plugin->isApplicationPlugin();

Returns
true if the plugin could be registered
bool Cutelyst::Application::registerView ( View view)
protected

This method registers a View class which is responsible for rendering requests.

Parameters
viewthe View class
Returns
true if succeeded
void Cutelyst::Application::setConfig ( const QString &  key,
const QVariant &  value 
)
protected

Change the value of the configuration key You should never call this from random parts of the code as a way to store shareable data, it should only be called by a subclass

QString Cutelyst::Application::translate ( const QLocale &  locale,
const char *  context,
const char *  sourceText,
const char *  disambiguation = nullptr,
int  n = -1 
) const

Translates the sourceText into the target locale language.

This uses the installed translators for the specified locale to translate the sourceText for the given context into the target locale. Optionally you can use a disambiguation and/or the n parameter to translate a pluralized version.

See also
Context::translate(), QTranslator::translate()
Since
Cutelyst 1.5.0
View* Cutelyst::Application::view ( const QString &  name = QString()) const

Returns the view specified by name, if no view is found nullptr is returned.