From bbed6bb6536819e8e12c851c4cc52bbeb82716a8 Mon Sep 17 00:00:00 2001 From: Mars Ultor Date: Fri, 24 Oct 2025 23:01:57 -0500 Subject: [PATCH] established buffer, must now switch to json --- example-host-config.toml | 1 + src/daemon-utils/socket-manager.cpp | 25 +++++++++++++++++++++++++ src/daemon-utils/socket-manager.hpp | 6 ++++++ src/main-daemon.cpp | 14 +++++++++++++- src/shared-utils/objects.cpp | 1 - src/shared-utils/objects.hpp | 2 +- 6 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 src/daemon-utils/socket-manager.cpp create mode 100644 src/daemon-utils/socket-manager.hpp diff --git a/example-host-config.toml b/example-host-config.toml index a7ace8a..067ab66 100644 --- a/example-host-config.toml +++ b/example-host-config.toml @@ -1,2 +1,3 @@ [hostname] base_path="https://tracker.example.com" +inter_comm_port=8032 diff --git a/src/daemon-utils/socket-manager.cpp b/src/daemon-utils/socket-manager.cpp new file mode 100644 index 0000000..8759962 --- /dev/null +++ b/src/daemon-utils/socket-manager.cpp @@ -0,0 +1,25 @@ +#include "socket-manager.hpp" +#include +#include +#include + +void start_daemon(std::uint16_t port){ + int server_socket = socket(AF_INET, SOCK_STREAM, 0); + sockaddr_in server_address; + server_address.sin_family = AF_INET; + server_address.sin_port = htons(8080); + server_address.sin_addr.s_addr = INADDR_ANY; + bind(server_socket, (struct sockaddr*)&server_address, + sizeof(server_address)); + + // listening to the assigned socket + listen(server_socket, 5); + while(true){ + int client_socket = accept(server_socket, nullptr,nullptr); + std::thread client_handling_thread = std::thread{handle_client, client_socket}; + } +} + +void handle_client(int client_socket){ + +} diff --git a/src/daemon-utils/socket-manager.hpp b/src/daemon-utils/socket-manager.hpp new file mode 100644 index 0000000..8ba68de --- /dev/null +++ b/src/daemon-utils/socket-manager.hpp @@ -0,0 +1,6 @@ +#pragma once +#include +#include +#include +void handle_client(int client_socket); +void start_daemon(std::uint16_t port); diff --git a/src/main-daemon.cpp b/src/main-daemon.cpp index 5f8aa99..a16b4f3 100644 --- a/src/main-daemon.cpp +++ b/src/main-daemon.cpp @@ -1,4 +1,7 @@ +#include "spdlog/common.h" #include "spdlog/spdlog.h" +#include +#include #include #include // This is the *daemon* @@ -6,9 +9,18 @@ int main() { std::cout << "Hello from the email tracker's daemon (C++23)\n"; spdlog::info("Logger is functional."); + spdlog::set_level(spdlog::level::debug); + + bool does_exist_config = std::filesystem::exists("host-config.toml"); + spdlog::debug("Host config existential status: {}", does_exist_config); + if (!does_exist_config) return -1; 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); + + spdlog::debug("Path collected: {}", http_server_fqdn); + spdlog::debug("Port collected for inter-process communication {}", inter_comm_port); return 0; } diff --git a/src/shared-utils/objects.cpp b/src/shared-utils/objects.cpp index b4b8237..fe086be 100644 --- a/src/shared-utils/objects.cpp +++ b/src/shared-utils/objects.cpp @@ -3,6 +3,5 @@ namespace serializable { template void serialize(S &s, HandshakeConnection &object){ - s.value2b(object.payload); } } diff --git a/src/shared-utils/objects.hpp b/src/shared-utils/objects.hpp index 9a1b0bf..8588f8e 100644 --- a/src/shared-utils/objects.hpp +++ b/src/shared-utils/objects.hpp @@ -1,5 +1,5 @@ #pragma once -#include + #include namespace serializable{