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.

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 dispatch(), express::dispatcher::RouterDispatcher::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.

Friends And Related Symbol Documentation

◆ 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: