aboutsummaryrefslogtreecommitdiff
path: root/zenserver/admin/admin.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-11-29 12:55:08 +0100
committerPer Larsson <[email protected]>2021-11-29 12:55:08 +0100
commit9a8e2c8d905bc1e5b62c6f5e246d2574a645b73e (patch)
treefb6cd0492812dd8ea99ba3dde27cc2b49dd978dc /zenserver/admin/admin.cpp
parentMerged main. (diff)
downloadzen-9a8e2c8d905bc1e5b62c6f5e246d2574a645b73e.tar.xz
zen-9a8e2c8d905bc1e5b62c6f5e246d2574a645b73e.zip
Moved GC to background thread and added endpoint to trigger/status GC.
Diffstat (limited to 'zenserver/admin/admin.cpp')
-rw-r--r--zenserver/admin/admin.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/zenserver/admin/admin.cpp b/zenserver/admin/admin.cpp
index 2dd9b110f..0d7a57e36 100644
--- a/zenserver/admin/admin.cpp
+++ b/zenserver/admin/admin.cpp
@@ -5,11 +5,14 @@
#include "admin.h"
#include <zencore/compactbinarybuilder.h>
+#include <zencore/string.h>
namespace zen {
HttpAdminService::HttpAdminService()
{
+ using namespace std::literals;
+
m_Router.RegisterRoute(
"health",
[this](HttpRouterRequest& Req) {
@@ -19,12 +22,50 @@ HttpAdminService::HttpAdminService()
},
HttpVerb::kGet);
+ m_Router.RegisterRoute(
+ "gc",
+ [this](HttpRouterRequest& Req) {
+ CbObject Response;
+ if (m_GcHandler.Status)
+ {
+ Response = m_GcHandler.Status();
+ }
+ else
+ {
+ CbObjectWriter Writer;
+ Writer << "Status"sv
+ << "Ok"sv;
+ Response = Writer.Save();
+ }
+ Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Response);
+ },
+ HttpVerb::kGet);
+
+ m_Router.RegisterRoute(
+ "gc",
+ [this](HttpRouterRequest& Req) {
+ CbObject Response;
+ if (m_GcHandler.Trigger)
+ {
+ Response = m_GcHandler.Trigger();
+ }
+ else
+ {
+ CbObjectWriter Writer;
+ Writer << "Status"sv
+ << "Ok"sv;
+ Response = Writer.Save();
+ }
+ Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Response);
+ },
+ HttpVerb::kPost);
+
// RPC endpoint
m_Router.RegisterRoute(
"",
[this](HttpRouterRequest& Req) {
CbObject Payload = Req.ServerRequest().ReadPayloadObject();
-
+
CbObjectWriter Obj;
Obj.AddBool("ok", true);
Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Obj.Save());