35#include <shared_mutex>
48export import kcenon.common;
49export import kcenon.thread;
64class thread_pool_interface;
65class logger_interface;
66class monitoring_interface;
67class io_context_thread_manager;
91 virtual void submit(std::function<
void()> task) = 0;
230 std::unique_ptr<asio::executor_work_guard<asio::io_context::executor_type>>
work_guard_;
276 void set_logger(std::shared_ptr<integration::logger_interface> logger);
288 void set_monitoring(std::shared_ptr<integration::monitoring_interface> monitoring);
316 std::shared_ptr<integration::logger_interface>
logger_;
318 std::unique_ptr<integration::io_context_thread_manager>
io_manager_;
339 size_t max_connections = 10,
340 std::chrono::seconds idle_timeout = std::chrono::seconds(60));
380export namespace
kcenon::network::core {
403 default:
return "unknown";
Manages a pool of reusable client connections to reduce connection overhead and improve performance.
void clear()
Clear all pooled connections.
connection_pool & operator=(const connection_pool &)=delete
size_t size() const noexcept
Get current pool size.
size_t max_size() const noexcept
Get maximum pool size.
connection_pool(const connection_pool &)=delete
connection_pool(size_t max_connections=10, std::chrono::seconds idle_timeout=std::chrono::seconds(60))
Construct a connection pool.
std::chrono::seconds idle_timeout_
~connection_pool()
Destructor - closes all pooled connections.
Global context for shared network system resources.
std::unique_ptr< integration::io_context_thread_manager > io_manager_
void set_thread_pool(std::shared_ptr< integration::thread_pool_interface > pool)
Set custom thread pool.
integration::io_context_thread_manager & get_io_context_manager()
Get the io_context thread manager.
static network_context & instance()
Get the singleton instance.
std::shared_ptr< integration::thread_pool_interface > thread_pool_
std::shared_ptr< integration::monitoring_interface > get_monitoring()
Get current monitoring system.
void set_monitoring(std::shared_ptr< integration::monitoring_interface > monitoring)
Set custom monitoring system.
std::shared_ptr< integration::logger_interface > get_logger()
Get current logger.
void reset()
Reset all resources to defaults.
network_context & operator=(const network_context &)=delete
void set_logger(std::shared_ptr< integration::logger_interface > logger)
Set custom logger.
std::shared_ptr< integration::monitoring_interface > monitoring_
std::shared_ptr< integration::thread_pool_interface > get_thread_pool()
Get current thread pool.
~network_context()=default
std::shared_ptr< integration::logger_interface > logger_
network_context(const network_context &)=delete
Manages io_context execution on shared thread pools.
io_context_thread_manager(size_t worker_count=0)
Construct a manager with specified worker count.
std::atomic< bool > running_
void stop()
Stop the io_context and join worker threads.
io_context_thread_manager(const io_context_thread_manager &)=delete
asio::io_context & get_io_context() noexcept
Get the managed io_context.
std::unique_ptr< asio::executor_work_guard< asio::io_context::executor_type > > work_guard_
bool is_running() const noexcept
Check if the manager is running.
std::unique_ptr< asio::io_context > io_context_
std::vector< std::thread > workers_
size_t worker_count() const noexcept
Get the number of worker threads.
bool start()
Start the io_context worker threads.
io_context_thread_manager(io_context_thread_manager &&) noexcept
~io_context_thread_manager()
Destructor - stops the manager if running.
io_context_thread_manager & operator=(const io_context_thread_manager &)=delete
Interface for logger integration.
virtual void warning(std::string_view message)=0
Log a warning message.
virtual void info(std::string_view message)=0
Log an informational message.
virtual void error(std::string_view message)=0
Log an error message.
virtual ~logger_interface()=default
virtual void debug(std::string_view message)=0
Log a debug message.
Interface for monitoring integration.
virtual void record_gauge(std::string_view name, double value)=0
Record a gauge metric.
virtual void record_counter(std::string_view name, int64_t value)=0
Record a counter metric.
virtual void record_histogram(std::string_view name, double value)=0
Record a histogram metric.
virtual ~monitoring_interface()=default
Interface for thread pool integration.
virtual size_t worker_count() const =0
Get the number of worker threads.
virtual void submit(std::function< void()> task)=0
Submit a task to the thread pool.
virtual ~thread_pool_interface()=default
virtual bool is_running() const =0
Check if the thread pool is running.
std::function< void()> disconnection_callback
std::function< void()> connection_callback
Callback type aliases for messaging.
constexpr std::string_view to_string(connection_state state) noexcept
Convert connection state to string.
std::function< void(const std::string &)> error_callback
connection_state
Connection state enumeration.
std::function< void(std::span< const uint8_t >)> data_callback