SNode.C
Loading...
Searching...
No Matches
express::Route Class Reference

#include <Route.h>

Inheritance diagram for express::Route:
Collaboration diagram for express::Route:

Public Types

enum class  StrictRouting { INHERIT , STRICT , LAX }

Public Member Functions

 Route (const std::string &method, const std::string &relativeMountPath, const std::shared_ptr< Dispatcher > &dispatcher)
RoutesetStrictRouting (bool strict=true)
const StrictRoutinggetStrictRouting () const
std::list< std::string > getRoute (const std::string &parentMountPath, bool strictRouting) const
Routeuse (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routeuse (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routeuse (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routeuse (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routeall (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routeall (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routeall (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routeall (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routeget (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routeget (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routeget (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routeget (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routeput (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routeput (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routeput (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routeput (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routepost (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routepost (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routepost (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routepost (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routedel (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routedel (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routedel (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routedel (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routeconnect (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routeconnect (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routeconnect (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routeconnect (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routeoptions (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routeoptions (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routeoptions (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routeoptions (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routetrace (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routetrace (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routetrace (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routetrace (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routepatch (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routepatch (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routepatch (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routepatch (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const
Routehead (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Routehead (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda) const
template<typename... Lambdas>
Routehead (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda, Lambdas... lambdas) const
template<typename... Lambdas>
Routehead (const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> &lambda, Lambdas... lambdas) const

Private Member Functions

 Route ()
bool dispatch (Controller &controller)
bool dispatch (Controller &controller, const std::string &parentMountPath)
bool dispatchNext (Controller &controller, const std::string &parentMountPath)

Private Attributes

MountPoint mountPoint
std::shared_ptr< Dispatcherdispatcher
StrictRouting strictRouting = StrictRouting::INHERIT

Friends

class dispatcher::RouterDispatcher
class Dispatcher
class RootRoute
class Controller

Detailed Description

Definition at line 81 of file Route.h.

Member Enumeration Documentation

◆ StrictRouting

enum class express::Route::StrictRouting
strong
Enumerator
INHERIT 
STRICT 
LAX 

Definition at line 83 of file Route.h.

83{ INHERIT, STRICT, LAX };

Constructor & Destructor Documentation

◆ Route() [1/2]

express::Route::Route ( const std::string & method,
const std::string & relativeMountPath,
const std::shared_ptr< Dispatcher > & dispatcher )

Definition at line 75 of file Route.cpp.

76 : mountPoint(method, relativeMountPath)
78 }
std::shared_ptr< Dispatcher > dispatcher
Definition Route.h:101
MountPoint mountPoint
Definition Route.h:100

References dispatcher, express::MountPoint::MountPoint(), and mountPoint.

Here is the call graph for this function:

◆ Route() [2/2]

express::Route::Route ( )
private

Definition at line 70 of file Route.cpp.

71 : mountPoint("use", "")
72 , dispatcher(std::make_shared<dispatcher::RouterDispatcher>()) {
73 }

References dispatcher, express::MountPoint::MountPoint(), and mountPoint.

Here is the call graph for this function:

Member Function Documentation

◆ all() [1/4]

Route & express::Route::all ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 132 of file Route.cpp.

◆ all() [2/4]

template<typename... Lambdas>
Route & express::Route::all ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 76 of file Route.hpp.

◆ all() [3/4]

Route & express::Route::all ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 132 of file Route.cpp.

◆ all() [4/4]

template<typename... Lambdas>
Route & express::Route::all ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 76 of file Route.hpp.

◆ connect() [1/4]

Route & express::Route::connect ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 137 of file Route.cpp.

◆ connect() [2/4]

template<typename... Lambdas>
Route & express::Route::connect ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 81 of file Route.hpp.

◆ connect() [3/4]

Route & express::Route::connect ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 137 of file Route.cpp.

◆ connect() [4/4]

template<typename... Lambdas>
Route & express::Route::connect ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 81 of file Route.hpp.

◆ del() [1/4]

Route & express::Route::del ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 136 of file Route.cpp.

◆ del() [2/4]

template<typename... Lambdas>
Route & express::Route::del ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 80 of file Route.hpp.

◆ del() [3/4]

Route & express::Route::del ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 136 of file Route.cpp.

◆ del() [4/4]

template<typename... Lambdas>
Route & express::Route::del ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 80 of file Route.hpp.

◆ dispatch() [1/2]

bool express::Route::dispatch ( Controller & controller)
private

Definition at line 80 of file Route.cpp.

80 {
81 return dispatch(controller, "");
82 }
bool dispatch(Controller &controller)
Definition Route.cpp:80

References dispatch().

Referenced by express::RootRoute::dispatch().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dispatch() [2/2]

bool express::Route::dispatch ( Controller & controller,
const std::string & parentMountPath )
private

Definition at line 84 of file Route.cpp.

84 {
85 controller.setCurrentRoute(this);
86
87 const bool originalIsInherit = strictRouting == StrictRouting::INHERIT;
88
89 if (originalIsInherit) {
90 strictRouting = controller.getStrictRouting() ? StrictRouting::STRICT : StrictRouting::LAX;
91 }
92
93 const bool oldStrictRouting = controller.setStrictRouting(strictRouting == StrictRouting::STRICT);
94
95 bool dispatched = dispatcher->dispatch(controller, parentMountPath, mountPoint);
96
97 controller.setStrictRouting(oldStrictRouting);
98
99 if (originalIsInherit) {
101 }
102
103 if (!dispatched) { // TODO: only call if parent route matched
104 dispatched = controller.dispatchNext(parentMountPath);
105 }
106
107 return dispatched;
108 }
StrictRouting strictRouting
Definition Route.h:103

References express::Dispatcher::dispatch(), dispatcher, express::Controller::dispatchNext(), express::Controller::getStrictRouting(), INHERIT, LAX, mountPoint, express::Controller::setCurrentRoute(), express::Controller::setStrictRouting(), STRICT, and strictRouting.

Referenced by express::dispatcher::RouterDispatcher::dispatch(), dispatch(), and express::Dispatcher::dispatchNext().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dispatchNext()

bool express::Route::dispatchNext ( Controller & controller,
const std::string & parentMountPath )
private

Definition at line 110 of file Route.cpp.

110 {
111 return dispatcher->dispatchNext(controller, parentMountPath);
112 }

References dispatcher, and express::Dispatcher::dispatchNext().

Referenced by express::Controller::dispatchNext().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get() [1/4]

Route & express::Route::get ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 133 of file Route.cpp.

◆ get() [2/4]

template<typename... Lambdas>
Route & express::Route::get ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 77 of file Route.hpp.

◆ get() [3/4]

Route & express::Route::get ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 133 of file Route.cpp.

◆ get() [4/4]

template<typename... Lambdas>
Route & express::Route::get ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 77 of file Route.hpp.

◆ getRoute()

std::list< std::string > express::Route::getRoute ( const std::string & parentMountPath,
bool strictRouting ) const

Definition at line 114 of file Route.cpp.

114 {
115 const bool concreteStrictRouting =
117
118 return dispatcher->getRoutes(parentMountPath, mountPoint, concreteStrictRouting);
119 }

References dispatcher, express::Dispatcher::getRoutes(), INHERIT, mountPoint, STRICT, and strictRouting.

Referenced by express::dispatcher::ApplicationDispatcher::getRoutes(), express::dispatcher::MiddlewareDispatcher::getRoutes(), and express::dispatcher::RouterDispatcher::getRoutes().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getStrictRouting()

const Route::StrictRouting & express::Route::getStrictRouting ( ) const

Definition at line 127 of file Route.cpp.

127 {
128 return strictRouting;
129 }

References strictRouting.

◆ head() [1/4]

Route & express::Route::head ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 141 of file Route.cpp.

◆ head() [2/4]

template<typename... Lambdas>
Route & express::Route::head ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 85 of file Route.hpp.

◆ head() [3/4]

Route & express::Route::head ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 141 of file Route.cpp.

◆ head() [4/4]

template<typename... Lambdas>
Route & express::Route::head ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 85 of file Route.hpp.

◆ options() [1/4]

Route & express::Route::options ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 138 of file Route.cpp.

◆ options() [2/4]

template<typename... Lambdas>
Route & express::Route::options ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 82 of file Route.hpp.

◆ options() [3/4]

Route & express::Route::options ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 138 of file Route.cpp.

◆ options() [4/4]

template<typename... Lambdas>
Route & express::Route::options ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 82 of file Route.hpp.

◆ patch() [1/4]

Route & express::Route::patch ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 140 of file Route.cpp.

◆ patch() [2/4]

template<typename... Lambdas>
Route & express::Route::patch ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 84 of file Route.hpp.

◆ patch() [3/4]

Route & express::Route::patch ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 140 of file Route.cpp.

◆ patch() [4/4]

template<typename... Lambdas>
Route & express::Route::patch ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 84 of file Route.hpp.

◆ post() [1/4]

Route & express::Route::post ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 135 of file Route.cpp.

◆ post() [2/4]

template<typename... Lambdas>
Route & express::Route::post ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 79 of file Route.hpp.

◆ post() [3/4]

Route & express::Route::post ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 135 of file Route.cpp.

◆ post() [4/4]

template<typename... Lambdas>
Route & express::Route::post ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 79 of file Route.hpp.

◆ put() [1/4]

Route & express::Route::put ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 134 of file Route.cpp.

◆ put() [2/4]

template<typename... Lambdas>
Route & express::Route::put ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 78 of file Route.hpp.

◆ put() [3/4]

Route & express::Route::put ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 134 of file Route.cpp.

◆ put() [4/4]

template<typename... Lambdas>
Route & express::Route::put ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 78 of file Route.hpp.

◆ setStrictRouting()

Route & express::Route::setStrictRouting ( bool strict = true)

Definition at line 121 of file Route.cpp.

121 {
123
124 return *this;
125 }

References LAX, STRICT, and strictRouting.

◆ trace() [1/4]

Route & express::Route::trace ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 139 of file Route.cpp.

◆ trace() [2/4]

template<typename... Lambdas>
Route & express::Route::trace ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 83 of file Route.hpp.

◆ trace() [3/4]

Route & express::Route::trace ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 139 of file Route.cpp.

◆ trace() [4/4]

template<typename... Lambdas>
Route & express::Route::trace ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 83 of file Route.hpp.

◆ use() [1/4]

Route & express::Route::use ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda) const

Definition at line 131 of file Route.cpp.

◆ use() [2/4]

template<typename... Lambdas>
Route & express::Route::use ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> & lambda,
Lambdas... lambdas ) const

Definition at line 75 of file Route.hpp.

◆ use() [3/4]

Route & express::Route::use ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda) const

Definition at line 131 of file Route.cpp.

◆ use() [4/4]

template<typename... Lambdas>
Route & express::Route::use ( const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &, Next &)> & lambda,
Lambdas... lambdas ) const

Definition at line 75 of file Route.hpp.

◆ Controller

friend class Controller
friend

Definition at line 121 of file Route.h.

◆ Dispatcher

friend class Dispatcher
friend

Definition at line 119 of file Route.h.

◆ dispatcher::RouterDispatcher

friend class dispatcher::RouterDispatcher
friend

Definition at line 118 of file Route.h.

◆ RootRoute

friend class RootRoute
friend

Definition at line 120 of file Route.h.

Member Data Documentation

◆ dispatcher

◆ mountPoint

MountPoint express::Route::mountPoint
private

Definition at line 100 of file Route.h.

Referenced by dispatch(), getRoute(), express::RootRoute::getRoutes(), Route(), and Route().

◆ strictRouting

StrictRouting express::Route::strictRouting = StrictRouting::INHERIT
private

Definition at line 103 of file Route.h.

Referenced by dispatch(), getRoute(), getStrictRouting(), and setStrictRouting().


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