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

The Cutelyst Dispatcher. More...

#include <Cutelyst/Dispatcher>

Inheritance diagram for Cutelyst::Dispatcher:

Public Member Functions

 Dispatcher (QObject *parent=nullptr)
 
 ~Dispatcher ()
 
Controllercontroller (QStringView name) const
 
QList< Controller * > controllers () const
 
QVector< DispatchType * > dispatchers () const
 
ActionexpandAction (const Context *c, Action *action) const
 
ActiongetAction (QStringView name, QStringView nameSpace={}) const
 
ActiongetActionByPath (QStringView path) const
 
ActionList getActions (QStringView name, QStringView nameSpace) const
 
QString uriForAction (Action *action, const QStringList &captures) 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 (const QString &name, 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
 
QList< T > findChildren (Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isQuickItemType () const const
 
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)
 
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_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::milliseconds interval, Qt::TimerType timerType)
 
QThreadthread () const const
 

Protected Member Functions

bool dispatch (Context *c)
 
bool forward (Context *c, Component *component)
 
bool forward (Context *c, QStringView opname)
 
void prepareAction (Context *c)
 
void setupActions (const QVector< Controller * > &controllers, const QVector< DispatchType * > &dispatchers, bool printActions)
 
- 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 Controller
 

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
typedef QObjectList
 
- Properties inherited from QObject
 objectName
 

Detailed Description

This class is resposible for finding an Action for new requests and invoking it.

Definition at line 28 of file dispatcher.h.

Constructor & Destructor Documentation

◆ Dispatcher()

Dispatcher::Dispatcher ( QObject parent = nullptr)

Constructs a new Dispatcher object with the given parent.

Definition at line 23 of file dispatcher.cpp.

References QObject::parent().

◆ ~Dispatcher()

Dispatcher::~Dispatcher ( )

Destroys the Dispatcher object.

Definition at line 31 of file dispatcher.cpp.

Member Function Documentation

◆ controller()

Controller * Dispatcher::controller ( QStringView  name) const

Returns a Controller given it's name.

Definition at line 266 of file dispatcher.cpp.

Referenced by setupActions().

◆ controllers()

QList< Controller * > Dispatcher::controllers ( ) const

Returns a list of registered controllers.

Definition at line 272 of file dispatcher.cpp.

References QList::append().

Referenced by setupActions().

◆ dispatch()

bool Dispatcher::dispatch ( Context c)
protected

Delegate the dispatch to the action that matched the url, or return a message about unknown resource.

Definition at line 123 of file dispatcher.cpp.

References Cutelyst::Controller::_DISPATCH(), Cutelyst::Context::action, Cutelyst::Context::appendError(), QString::arg(), Cutelyst::Action::controller(), QString::isEmpty(), Cutelyst::Context::qtTrId(), and Cutelyst::Context::req.

Referenced by expandAction(), setupActions(), and uriForAction().

◆ dispatchers()

QVector< DispatchType * > Dispatcher::dispatchers ( ) const

Returns a list of all dispatchers currently in use, if the dispatcher doesn't successfuly register an Action it's removed from the list.

Definition at line 315 of file dispatcher.cpp.

Referenced by setupActions().

◆ expandAction()

Action * Dispatcher::expandAction ( const Context c,
Action action 
) const

Expand an action into a full representation of the dispatch. Mostly useful for chained where the returned Action will be of ActionChain type, other actions will just return a single action.

Definition at line 303 of file dispatcher.cpp.

References dispatch().

◆ forward() [1/2]

bool Dispatcher::forward ( Context c,
Component component 
)
protected

Used by Application to forward execution to the following Component.

Definition at line 141 of file dispatcher.cpp.

References Cutelyst::Context::execute().

◆ forward() [2/2]

bool Dispatcher::forward ( Context c,
QStringView  opname 
)
protected

Used by Application to forward execution to opname that is resolved to an Action.

Definition at line 149 of file dispatcher.cpp.

References Cutelyst::Action::dispatch(), and Cutelyst::Context::request.

◆ getAction()

Action * Dispatcher::getAction ( QStringView  name,
QStringView  nameSpace = {} 
) const

Returns an action by name from a given nameSpace.

Definition at line 216 of file dispatcher.cpp.

References getActionByPath(), and QStringView::isEmpty().

◆ getActionByPath()

Action * Dispatcher::getActionByPath ( QStringView  path) const

Returns an action by its full private path.

Definition at line 232 of file dispatcher.cpp.

References QStringView::count(), QStringView::mid(), and QStringView::startsWith().

Referenced by Cutelyst::RoleACL::dispatcherReady(), and getAction().

◆ getActions()

ActionList Dispatcher::getActions ( QStringView  name,
QStringView  nameSpace 
) const

Returns a list of actions that match name on the desired namespace nameSpace.

Definition at line 245 of file dispatcher.cpp.

References QList::append(), QStringView::isEmpty(), QList::rbegin(), and QList::rend().

◆ prepareAction()

void Dispatcher::prepareAction ( Context c)
protected

Used by Application to find a matching action for the current Context c.

Definition at line 162 of file dispatcher.cpp.

References QList::isEmpty(), QString::isEmpty(), QStringList::join(), and Cutelyst::Context::request.

◆ setupActions()

void Dispatcher::setupActions ( const QVector< Controller * > &  controllers,
const QVector< DispatchType * > &  dispatchers,
bool  printActions 
)
protected

Used by Application to register all Controllers Actions into the list of DispatchType.

Definition at line 36 of file dispatcher.cpp.

References Cutelyst::Controller::actions(), QList::append(), controller(), controllers(), dispatch(), dispatchers(), and QObject::objectName.

◆ uriForAction()

QString Dispatcher::uriForAction ( Action action,
const QStringList captures 
) const

Takes a Catalyst::Action object and action parameters and returns a URI part such that if $c->req->path were this URI part, this action would be dispatched to with $c->req->captures set to the supplied arrayref.

If the action object is not available for external dispatch or the dispatcher cannot determine an appropriate URI, this method will return a null byte array.

Definition at line 282 of file dispatcher.cpp.

References dispatch(), QString::isEmpty(), and QString::isNull().