http server functional

This commit is contained in:
2025-10-25 12:23:53 -05:00
parent 4631911992
commit 6720d725c2
7 changed files with 24 additions and 0 deletions

3
.gitmodules vendored
View File

@@ -16,3 +16,6 @@
[submodule "external/BLAKE3"]
path = external/BLAKE3
url = https://github.com/BLAKE3-team/BLAKE3
[submodule "external/cpp-httplib"]
path = external/cpp-httplib
url = https://github.com/yhirose/cpp-httplib

View File

@@ -23,6 +23,7 @@ add_subdirectory(external/tomlplusplus)
add_subdirectory(external/duckdb)
add_subdirectory(external/json)
add_subdirectory(external/BLAKE3/c)
add_subdirectory(external/cpp-httplib)
# -----------------------------
# Executables
@@ -40,6 +41,7 @@ set(COMMON_LIBS
duckdb_static
nlohmann_json
blake3
# cpp-httplib
)
# -----------------------------
@@ -52,6 +54,7 @@ set(EXTERNAL_INCLUDES
${CMAKE_CURRENT_SOURCE_DIR}/external/duckdb/src/include
${CMAKE_CURRENT_SOURCE_DIR}/external/json/include/nlohmann
${CMAKE_CURRENT_SOURCE_DIR}/external/BLAKE3/c
${CMAKE_CURRENT_SOURCE_DIR}/external/cpp-httplib
)
# -----------------------------

View File

@@ -1,3 +1,4 @@
[hostname]
base_path="https://tracker.example.com"
inter_comm_port=8032
http_port=9032

1
external/cpp-httplib vendored Submodule

Submodule external/cpp-httplib added at db561f5552

View File

@@ -11,6 +11,8 @@
#include "../shared-utils/socket-utils.hpp"
#include <cstdint>
#include <httplib.h>
namespace socket_manager {
void start_daemon(std::uint16_t port){
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
@@ -45,4 +47,12 @@ void handle_client(int client_socket){
close(client_socket);
spdlog::debug("Connection closed gracefully {}", client_socket);
}
void start_http_server(std::uint16_t port){
spdlog::info("Starting HTTP server on {}", port);
httplib::Server server = httplib::Server{};
server.Get("/test", [](const httplib::Request &, httplib::Response &res) {
res.set_content("Hello World!", "text/plain");
});
server.listen("0.0.0.0", port);
}
}

View File

@@ -6,5 +6,6 @@
namespace socket_manager {
void handle_client(int client_socket);
void start_daemon(std::uint16_t port);
void start_http_server(std::uint16_t port);
}

View File

@@ -20,12 +20,17 @@ int main() {
auto config = toml::parse_file("host-config.toml");
std::string http_server_fqdn = config["hostname"]["base_path"].value_or("http://example.com");
std::uint16_t inter_comm_port = config["hostname"]["inter_comm_port"].value_or(8033);
std::uint16_t http_port = config["hostname"]["http_port"].value_or(9033);
spdlog::debug("Path collected: {}", http_server_fqdn);
spdlog::debug("Port collected for inter-process communication {}", inter_comm_port);
std::thread socket_management_root = std::thread{socket_manager::start_daemon, inter_comm_port};
socket_management_root.detach();
spdlog::info("socket management thread started and detached");
std::thread http_server_root = std::thread{socket_manager::start_http_server, http_port};
http_server_root.detach();
spdlog::info("http root thread has been started and detached.");
while (true) {
sleep(100);
spdlog::debug("Status of socket management thread: {}", socket_management_root.joinable());