Radix Relay
Hybrid mesh communications with Signal Protocol encryption
Loading...
Searching...
No Matches
app_init.hpp
Go to the documentation of this file.
1#pragma once
2
6#include <core/events.hpp>
8#include <fmt/core.h>
9#include <memory>
10#include <spdlog/spdlog.h>
11#include <string>
12
14
19{
20 std::string node_fingerprint;
21 std::string mode;
22 std::string identity_path;
23};
24
31inline auto configure_logging(const cli_args &args,
32 std::shared_ptr<async::async_queue<core::events::display_filter_input_t>> display_queue = nullptr) -> void
33{
34 if (display_queue) {
35 auto tui_sink = std::make_shared<tui_sink_mutex_t>(display_queue);
36 auto logger = std::make_shared<spdlog::logger>("tui_logger", tui_sink);
37 spdlog::set_default_logger(logger);
38 }
39
40 if (args.verbose) { spdlog::set_level(spdlog::level::debug); }
41}
42
48inline auto print_app_banner(const app_state &state) -> void
49{
50 fmt::print("Radix Relay v{} - Interactive Mode\n", radix_relay::cmake::project_version);
51 fmt::print("Node: {} ({})\n", state.node_fingerprint, state.identity_path);
52 fmt::print("transport: {}\n", state.mode);
53 fmt::print("Connected Peers: 0 (transport layer not implemented)\n\n");
54}
55
59inline auto print_available_commands() -> void
60{
61 fmt::print(
62 "Available commands: send, broadcast, peers, status, sessions, mode, scan, connect, trust, verify, version, help, "
63 "quit\n\n");
64}
65
74template<typename CommandHandler>
75[[nodiscard]] inline auto execute_cli_command(const cli_args &args, CommandHandler &command_handler) -> bool
76{
77 if (args.show_version) {
78 command_handler(radix_relay::core::events::version{});
79 return true;
80 }
81
82 if (args.send_parsed) {
83 command_handler(radix_relay::core::events::send{ .peer = args.send_recipient, .message = args.send_message });
84 return true;
85 }
86
87 if (args.peers_parsed) {
88 command_handler(radix_relay::core::events::peers{});
89 return true;
90 }
91
92 if (args.status_parsed) {
93 command_handler(radix_relay::core::events::status{});
94 return true;
95 }
96
97 return false;
98}
99
100}// namespace radix_relay::cli_utils
Thread-safe asynchronous queue for message passing between coroutines.
Custom spdlog sink that routes log messages to a display queue.
Definition tui_sink.hpp:20
auto configure_logging(const cli_args &args, std::shared_ptr< async::async_queue< core::events::display_filter_input_t > > display_queue=nullptr) -> void
Configures spdlog logging based on CLI arguments.
Definition app_init.hpp:31
auto execute_cli_command(const cli_args &args, CommandHandler &command_handler) -> bool
Executes a command specified via CLI arguments.
Definition app_init.hpp:75
auto print_available_commands() -> void
Prints list of available interactive commands.
Definition app_init.hpp:59
auto print_app_banner(const app_state &state) -> void
Prints the application startup banner.
Definition app_init.hpp:48
Runtime application state.
Definition app_init.hpp:19
std::string identity_path
Path to identity database.
Definition app_init.hpp:22
std::string mode
Current transport mode.
Definition app_init.hpp:21
std::string node_fingerprint
Signal Protocol node fingerprint.
Definition app_init.hpp:20
Parsed command-line arguments.
Request list of connected peers.
Definition events.hpp:20
Send encrypted message to a specific peer.
Definition events.hpp:56
std::string peer
RDX fingerprint or alias of recipient.
Definition events.hpp:57
Request current system status.
Definition events.hpp:25
Request application version information.
Definition events.hpp:45