root: macro: layout reorg, related refactor

This commit is contained in:
2024-07-20 16:44:12 -07:00
parent d2788cc511
commit 09c45c794b
8 changed files with 36 additions and 36 deletions

View File

@@ -0,0 +1,92 @@
// docker-finance | modern accounting for the power-user
//
// Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//! \file
//! \author Aaron Fiore (Founder, Evergreen Crypto LLC)
//! \note File intended to be loaded into ROOT.cern framework / Cling interpreter
//! \since docker-finance 1.0.0
#ifndef CONTAINER_SRC_ROOT_MACRO_WEB_SERVER_C_
#define CONTAINER_SRC_ROOT_MACRO_WEB_SERVER_C_
#include <THttpServer.h>
#include <memory>
#include "../common/common.hh"
//! \namespace docker_finance
//! \since docker-finance 1.0.0
namespace docker_finance
{
//! \namespace docker_finance::macro
//! \brief ROOT macros
//! \since docker-finance 1.0.0
namespace macro
{
//! \namespace docker_finance::macro::internal
//! \brief ROOT macros for internal use only
//! \since docker-finance 1.0.0
namespace internal
{
//! \brief HTTP Server instance
//! \note In namespace scope because of ROOT's static functions requirement
//! \since docker-finance 1.0.0
auto g_HTTPServer = std::make_unique<::THttpServer>("http:8080");
} // namespace internal
//! \brief Web server managing class
//! \ingroup cpp_macro
//! \since docker-finance 1.0.0
class Web final
{
public:
Web() = default;
~Web() = default;
Web(const Web&) = delete;
Web& operator=(const Web&) = delete;
Web(Web&&) = default;
Web& operator=(Web&&) = default;
private:
//! \brief ROOT HTTP server command registrar
//! \details Registers internal macros
static void register_commands()
{
::docker_finance::macro::internal::Command::load({"web/internal/crypto.C"});
internal::g_HTTPServer->RegisterCommand(
"/rng_sample",
"::docker_finance::macro::internal::Crypto::rng_sample(\"%arg1%\")");
::docker_finance::macro::internal::Command::load({"web/internal/meta.C"});
internal::g_HTTPServer->RegisterCommand(
"/meta_sample",
"::docker_finance::macro::internal::Meta::meta_sample(\"%arg1%\")");
}
public:
//! \brief Start webserver
static void run() { Web::register_commands(); }
};
} // namespace macro
} // namespace docker_finance
#endif // CONTAINER_SRC_ROOT_MACRO_WEB_SERVER_C_
// # vim: sw=2 sts=2 si ai et