From 290bdb5fda74b869a64bbfd1c5885ca9a64f2da8 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Mon, 15 Sep 2025 13:34:52 -0500 Subject: [PATCH] refactor ui server --- repertory/repertory/include/ui/ui_server.hpp | 3 +++ repertory/repertory/src/ui/ui_server.cpp | 26 +++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/repertory/repertory/include/ui/ui_server.hpp b/repertory/repertory/include/ui/ui_server.hpp index 0f11cd05..33967e64 100644 --- a/repertory/repertory/include/ui/ui_server.hpp +++ b/repertory/repertory/include/ui/ui_server.hpp @@ -24,12 +24,15 @@ #include "events/consumers/console_consumer.hpp" #include "events/consumers/logging_consumer.hpp" +#include "events/event_system.hpp" #include "utils/common.hpp" namespace repertory::ui { class mgmt_app_config; class ui_server final { + E_CONSUMER(); + private: static constexpr auto nonce_length{128U}; static constexpr auto nonce_timeout{15U}; diff --git a/repertory/repertory/src/ui/ui_server.cpp b/repertory/repertory/src/ui/ui_server.cpp index bcf54dba..1fea462c 100644 --- a/repertory/repertory/src/ui/ui_server.cpp +++ b/repertory/repertory/src/ui/ui_server.cpp @@ -129,6 +129,16 @@ ui_server::ui_server(mgmt_app_config *config) repertory_binary_(utils::path::combine(".", {REPERTORY})) #endif // defined(_WIN32) { + E_SUBSCRIBE(event_level_changed, [this](auto &&event) { + config_->set_event_level(event.new_level); + }); + +#if defined(_WIN32) + if (config_->get_hidden()) { + ::ShowWindow(::GetConsoleWindow(), SW_HIDE); + } +#endif // defined(_WIN32) + #if defined(__APPLE__) server_.set_mount_point("/ui", "../Resources/web"); #else // !defined(__APPLE__) @@ -137,11 +147,11 @@ ui_server::ui_server(mgmt_app_config *config) server_.set_socket_options([](auto &&sock) { #if defined(_WIN32) - BOOL enable = TRUE; + BOOL enable{TRUE}; ::setsockopt(sock, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, reinterpret_cast(&enable), sizeof(enable)); #else // !defined(_WIN32)! - int one = 1; + int one{1}; ::setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast(&one), sizeof(one)); #ifdef SO_REUSEPORT @@ -262,15 +272,13 @@ ui_server::ui_server(mgmt_app_config *config) server_.Put("/api/v1/settings", [this](auto &&req, auto &&res) { handle_put_settings(req, res); }); - -#if defined(_WIN32) - if (config_->get_hidden()) { - ::ShowWindow(::GetConsoleWindow(), SW_HIDE); - } -#endif // defined(_WIN32) } -ui_server::~ui_server() { stop(); } +ui_server::~ui_server() { + stop(); + + E_CONSUMER_RELEASE(); +} auto ui_server::data_directory_exists(provider_type prov, std::string_view name) const -> bool {