MySQL 9.4.0
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
HttpRequestRouter Class Reference

#include <http_request_router.h>

Inheritance diagram for HttpRequestRouter:
[legend]

Classes

class  RouteDirectMatcher
 
class  RouteRegexMatcher
 

Public Types

using RequestHandler = http::base::RequestHandler
 
using BaseRequestHandlerPtr = std::shared_ptr< http::base::RequestHandler >
 

Public Member Functions

void register_regex_handler (const std::string &url_host, const std::string &url_regex_str, std::unique_ptr< RequestHandler > cb)
 Request router. More...
 
void register_direct_match_handler (const std::string &url_host, const ::http::base::UriPathMatcher &uri_path_matcher, std::unique_ptr< RequestHandler > cb)
 
void unregister_handler (const void *handler_id)
 
void set_default_route (std::unique_ptr< RequestHandler > cb)
 
void clear_default_route ()
 
void route (http::base::Request &req) override
 
void require_realm (const std::string &realm)
 
- Public Member Functions inherited from http::server::RequestHandlerInterface
virtual ~RequestHandlerInterface ()=default
 

Private Types

using UrlPathKey = RouteDirectMatcher::UrlPathKey
 

Private Member Functions

void handler_not_found (http::base::Request &req)
 
BaseRequestHandlerPtr find_route_handler (std::string_view url_host, std::string_view path)
 
BaseRequestHandlerPtr find_direct_match_route_handler (std::string_view url_host, std::string_view path)
 
BaseRequestHandlerPtr find_regex_route_handler (std::string_view url_host, std::string_view path)
 
void unregister_regex_handler (const void *handler_id)
 
void unregister_direct_match_handler (const void *handler_id)
 

Private Attributes

std::map< std::string, std::map< UrlPathKey, RouteDirectMatcher >, std::less<> > request_direct_handlers_
 
std::map< std::string, std::vector< RouteRegexMatcher >, std::less<> > request_regex_handlers_
 
BaseRequestHandlerPtr default_route_
 
std::string require_realm_
 
std::shared_mutex route_mtx_
 

Friends

class HttpRequestRouterDirectMatchTest
 

Member Typedef Documentation

◆ BaseRequestHandlerPtr

◆ RequestHandler

◆ UrlPathKey

Member Function Documentation

◆ clear_default_route()

void HttpRequestRouter::clear_default_route ( )

◆ find_direct_match_route_handler()

BaseRequestHandlerPtr HttpRequestRouter::find_direct_match_route_handler ( std::string_view  url_host,
std::string_view  path 
)
private

◆ find_regex_route_handler()

BaseRequestHandlerPtr HttpRequestRouter::find_regex_route_handler ( std::string_view  url_host,
std::string_view  path 
)
private

◆ find_route_handler()

BaseRequestHandlerPtr HttpRequestRouter::find_route_handler ( std::string_view  url_host,
std::string_view  path 
)
private

◆ handler_not_found()

void HttpRequestRouter::handler_not_found ( http::base::Request req)
private

◆ register_direct_match_handler()

void HttpRequestRouter::register_direct_match_handler ( const std::string &  url_host,
const ::http::base::UriPathMatcher uri_path_matcher,
std::unique_ptr< RequestHandler cb 
)

◆ register_regex_handler()

void HttpRequestRouter::register_regex_handler ( const std::string &  url_host,
const std::string &  url_regex_str,
std::unique_ptr< RequestHandler cb 
)

Request router.

send requests for a path of the URI to a handler callback

if no handler is found, reply with 404 not found

◆ require_realm()

void HttpRequestRouter::require_realm ( const std::string &  realm)
inline

◆ route()

void HttpRequestRouter::route ( http::base::Request req)
overridevirtual

◆ set_default_route()

void HttpRequestRouter::set_default_route ( std::unique_ptr< RequestHandler cb)

◆ unregister_direct_match_handler()

void HttpRequestRouter::unregister_direct_match_handler ( const void *  handler_id)
private

◆ unregister_handler()

void HttpRequestRouter::unregister_handler ( const void *  handler_id)

◆ unregister_regex_handler()

void HttpRequestRouter::unregister_regex_handler ( const void *  handler_id)
private

Friends And Related Function Documentation

◆ HttpRequestRouterDirectMatchTest

friend class HttpRequestRouterDirectMatchTest
friend

Member Data Documentation

◆ default_route_

BaseRequestHandlerPtr HttpRequestRouter::default_route_
private

◆ request_direct_handlers_

std::map<std::string, std::map<UrlPathKey, RouteDirectMatcher>, std::less<> > HttpRequestRouter::request_direct_handlers_
private

◆ request_regex_handlers_

std::map<std::string, std::vector<RouteRegexMatcher>, std::less<> > HttpRequestRouter::request_regex_handlers_
private

◆ require_realm_

std::string HttpRequestRouter::require_realm_
private

◆ route_mtx_

std::shared_mutex HttpRequestRouter::route_mtx_
private

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