MXS-1220: Make HTTP request handler parameters const
The HttpRequest can be const as the request itself will not be modified.
This commit is contained in:
committed by
Markus Mäkelä
parent
043ed95bdf
commit
47d819b008
@ -29,7 +29,7 @@
|
|||||||
#include "filter.h"
|
#include "filter.h"
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
|
|
||||||
typedef HttpResponse (*ResourceCallback)(HttpRequest& request);
|
typedef HttpResponse (*ResourceCallback)(const HttpRequest& request);
|
||||||
|
|
||||||
class Resource
|
class Resource
|
||||||
{
|
{
|
||||||
@ -47,7 +47,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @return True if this request matches this resource
|
* @return True if this request matches this resource
|
||||||
*/
|
*/
|
||||||
bool match(HttpRequest& request);
|
bool match(const HttpRequest& request) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Handle a HTTP request
|
* @brief Handle a HTTP request
|
||||||
@ -56,11 +56,11 @@ public:
|
|||||||
*
|
*
|
||||||
* @return Response to the request
|
* @return Response to the request
|
||||||
*/
|
*/
|
||||||
HttpResponse call(HttpRequest& request);
|
HttpResponse call(const HttpRequest& request) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool matching_variable_path(const std::string& path, const std::string& target);
|
bool matching_variable_path(const std::string& path, const std::string& target) const;
|
||||||
|
|
||||||
ResourceCallback m_cb; /**< Resource handler callback */
|
ResourceCallback m_cb; /**< Resource handler callback */
|
||||||
std::deque<std::string> m_path; /**< Path components */
|
std::deque<std::string> m_path; /**< Path components */
|
||||||
@ -73,4 +73,4 @@ private:
|
|||||||
*
|
*
|
||||||
* @return Response to request
|
* @return Response to request
|
||||||
*/
|
*/
|
||||||
HttpResponse resource_handle_request(HttpRequest& request);
|
HttpResponse resource_handle_request(const HttpRequest& request);
|
||||||
|
|||||||
@ -31,7 +31,7 @@ using std::string;
|
|||||||
using mxs::SpinLock;
|
using mxs::SpinLock;
|
||||||
using mxs::SpinLockGuard;
|
using mxs::SpinLockGuard;
|
||||||
|
|
||||||
Resource::Resource(ResourceCallback cb, int components, ...):
|
Resource::Resource(ResourceCallback cb, int components, ...) :
|
||||||
m_cb(cb)
|
m_cb(cb)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
@ -45,9 +45,11 @@ Resource::Resource(ResourceCallback cb, int components, ...):
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
Resource::~Resource() { }
|
Resource::~Resource()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bool Resource::match(HttpRequest& request)
|
bool Resource::match(const HttpRequest& request) const
|
||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
|
|
||||||
@ -69,12 +71,12 @@ bool Resource::match(HttpRequest& request)
|
|||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse Resource::call(HttpRequest& request)
|
HttpResponse Resource::call(const HttpRequest& request) const
|
||||||
{
|
{
|
||||||
return m_cb(request);
|
return m_cb(request);
|
||||||
};
|
};
|
||||||
|
|
||||||
bool Resource::matching_variable_path(const string& path, const string& target)
|
bool Resource::matching_variable_path(const string& path, const string& target) const
|
||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
|
|
||||||
@ -103,7 +105,7 @@ bool Resource::matching_variable_path(const string& path, const string& target)
|
|||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_create_server(HttpRequest& request)
|
HttpResponse cb_create_server(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
json_t* json = request.get_json();
|
json_t* json = request.get_json();
|
||||||
|
|
||||||
@ -120,7 +122,7 @@ HttpResponse cb_create_server(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_BAD_REQUEST);
|
return HttpResponse(MHD_HTTP_BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_alter_server(HttpRequest& request)
|
HttpResponse cb_alter_server(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
json_t* json = request.get_json();
|
json_t* json = request.get_json();
|
||||||
|
|
||||||
@ -137,7 +139,7 @@ HttpResponse cb_alter_server(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_BAD_REQUEST);
|
return HttpResponse(MHD_HTTP_BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_create_monitor(HttpRequest& request)
|
HttpResponse cb_create_monitor(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
json_t* json = request.get_json();
|
json_t* json = request.get_json();
|
||||||
|
|
||||||
@ -154,12 +156,12 @@ HttpResponse cb_create_monitor(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_BAD_REQUEST);
|
return HttpResponse(MHD_HTTP_BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_all_servers(HttpRequest& request)
|
HttpResponse cb_all_servers(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
return HttpResponse(MHD_HTTP_OK, server_list_to_json(request.host()));
|
return HttpResponse(MHD_HTTP_OK, server_list_to_json(request.host()));
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_get_server(HttpRequest& request)
|
HttpResponse cb_get_server(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
SERVER* server = server_find_by_unique_name(request.uri_part(1).c_str());
|
SERVER* server = server_find_by_unique_name(request.uri_part(1).c_str());
|
||||||
|
|
||||||
@ -171,12 +173,12 @@ HttpResponse cb_get_server(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_all_services(HttpRequest& request)
|
HttpResponse cb_all_services(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
return HttpResponse(MHD_HTTP_OK, service_list_to_json(request.host()));
|
return HttpResponse(MHD_HTTP_OK, service_list_to_json(request.host()));
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_get_service(HttpRequest& request)
|
HttpResponse cb_get_service(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
SERVICE* service = service_find(request.uri_part(1).c_str());
|
SERVICE* service = service_find(request.uri_part(1).c_str());
|
||||||
|
|
||||||
@ -188,12 +190,12 @@ HttpResponse cb_get_service(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_all_filters(HttpRequest& request)
|
HttpResponse cb_all_filters(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
return HttpResponse(MHD_HTTP_OK, filter_list_to_json(request.host()));
|
return HttpResponse(MHD_HTTP_OK, filter_list_to_json(request.host()));
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_get_filter(HttpRequest& request)
|
HttpResponse cb_get_filter(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
MXS_FILTER_DEF* filter = filter_def_find(request.uri_part(1).c_str());
|
MXS_FILTER_DEF* filter = filter_def_find(request.uri_part(1).c_str());
|
||||||
|
|
||||||
@ -205,12 +207,12 @@ HttpResponse cb_get_filter(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_all_monitors(HttpRequest& request)
|
HttpResponse cb_all_monitors(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
return HttpResponse(MHD_HTTP_OK, monitor_list_to_json(request.host()));
|
return HttpResponse(MHD_HTTP_OK, monitor_list_to_json(request.host()));
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_get_monitor(HttpRequest& request)
|
HttpResponse cb_get_monitor(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
MXS_MONITOR* monitor = monitor_find(request.uri_part(1).c_str());
|
MXS_MONITOR* monitor = monitor_find(request.uri_part(1).c_str());
|
||||||
|
|
||||||
@ -222,13 +224,13 @@ HttpResponse cb_get_monitor(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_all_sessions(HttpRequest& request)
|
HttpResponse cb_all_sessions(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// TODO: Implement this
|
// TODO: Implement this
|
||||||
return HttpResponse(MHD_HTTP_OK);
|
return HttpResponse(MHD_HTTP_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_get_session(HttpRequest& request)
|
HttpResponse cb_get_session(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
int id = atoi(request.uri_part(1).c_str());
|
int id = atoi(request.uri_part(1).c_str());
|
||||||
MXS_SESSION* session = session_get_by_id(id);
|
MXS_SESSION* session = session_get_by_id(id);
|
||||||
@ -243,19 +245,19 @@ HttpResponse cb_get_session(HttpRequest& request)
|
|||||||
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
return HttpResponse(MHD_HTTP_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_maxscale(HttpRequest& request)
|
HttpResponse cb_maxscale(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// TODO: Show logs
|
// TODO: Show logs
|
||||||
return HttpResponse(MHD_HTTP_OK);
|
return HttpResponse(MHD_HTTP_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_logs(HttpRequest& request)
|
HttpResponse cb_logs(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// TODO: Show logs
|
// TODO: Show logs
|
||||||
return HttpResponse(MHD_HTTP_OK);
|
return HttpResponse(MHD_HTTP_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_flush(HttpRequest& request)
|
HttpResponse cb_flush(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// Flush logs
|
// Flush logs
|
||||||
if (mxs_log_rotate() == 0)
|
if (mxs_log_rotate() == 0)
|
||||||
@ -268,19 +270,19 @@ HttpResponse cb_flush(HttpRequest& request)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_threads(HttpRequest& request)
|
HttpResponse cb_threads(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// TODO: Show thread status
|
// TODO: Show thread status
|
||||||
return HttpResponse(MHD_HTTP_OK);
|
return HttpResponse(MHD_HTTP_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_tasks(HttpRequest& request)
|
HttpResponse cb_tasks(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// TODO: Show housekeeper tasks
|
// TODO: Show housekeeper tasks
|
||||||
return HttpResponse(MHD_HTTP_OK);
|
return HttpResponse(MHD_HTTP_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse cb_modules(HttpRequest& request)
|
HttpResponse cb_modules(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
// TODO: Show modules
|
// TODO: Show modules
|
||||||
return HttpResponse(MHD_HTTP_OK);
|
return HttpResponse(MHD_HTTP_OK);
|
||||||
@ -288,6 +290,8 @@ HttpResponse cb_modules(HttpRequest& request)
|
|||||||
|
|
||||||
class RootResource
|
class RootResource
|
||||||
{
|
{
|
||||||
|
RootResource(const RootResource&);
|
||||||
|
RootResource& operator=(const RootResource&);
|
||||||
public:
|
public:
|
||||||
typedef std::shared_ptr<Resource> SResource;
|
typedef std::shared_ptr<Resource> SResource;
|
||||||
typedef list<SResource> ResourceList;
|
typedef list<SResource> ResourceList;
|
||||||
@ -369,7 +373,7 @@ private:
|
|||||||
static RootResource resources; /**< Core resource set */
|
static RootResource resources; /**< Core resource set */
|
||||||
static SpinLock resource_lock;
|
static SpinLock resource_lock;
|
||||||
|
|
||||||
HttpResponse resource_handle_request(HttpRequest& request)
|
HttpResponse resource_handle_request(const HttpRequest& request)
|
||||||
{
|
{
|
||||||
SpinLockGuard guard(resource_lock);
|
SpinLockGuard guard(resource_lock);
|
||||||
return resources.process_request(request);
|
return resources.process_request(request);
|
||||||
|
|||||||
Reference in New Issue
Block a user