Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
i_connection.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
12#pragma once
13
22#include "i_transport.h"
23#include "types.h"
24
25#include <chrono>
26
28
88class i_connection : public i_transport {
89public:
95 ~i_connection() override = default;
96
97 // Non-copyable, movable (inherited from i_transport)
98 i_connection(const i_connection&) = delete;
102
103 // =========================================================================
104 // Connection Lifecycle Operations
105 // =========================================================================
106
126 [[nodiscard]] virtual auto connect(const endpoint_info& endpoint) -> VoidResult = 0;
127
141 [[nodiscard]] virtual auto connect(std::string_view url) -> VoidResult = 0;
142
157 virtual auto close() noexcept -> void = 0;
158
159 // =========================================================================
160 // Configuration Operations
161 // =========================================================================
162
173 virtual auto set_callbacks(connection_callbacks callbacks) -> void = 0;
174
184 virtual auto set_options(connection_options options) -> void = 0;
185
192 virtual auto set_timeout(std::chrono::milliseconds timeout) -> void = 0;
193
194 // =========================================================================
195 // State Query Operations
196 // =========================================================================
197
202 [[nodiscard]] virtual auto is_connecting() const noexcept -> bool = 0;
203
213 virtual auto wait_for_stop() -> void = 0;
214
215protected:
219 i_connection() = default;
220};
221
222} // namespace kcenon::network::unified
Core interface for active network connections.
virtual auto set_timeout(std::chrono::milliseconds timeout) -> void=0
Sets the connection timeout.
virtual auto connect(std::string_view url) -> VoidResult=0
Connects to a remote endpoint using URL.
i_connection & operator=(const i_connection &)=delete
i_connection(i_connection &&)=default
i_connection & operator=(i_connection &&)=default
virtual auto set_options(connection_options options) -> void=0
Sets connection options.
virtual auto close() noexcept -> void=0
Closes the connection gracefully.
virtual auto wait_for_stop() -> void=0
Blocks until the component has stopped.
i_connection(const i_connection &)=delete
~i_connection() override=default
Virtual destructor.
virtual auto set_callbacks(connection_callbacks callbacks) -> void=0
Sets all connection callbacks at once.
virtual auto is_connecting() const noexcept -> bool=0
Checks if the connection is in the process of connecting.
virtual auto connect(const endpoint_info &endpoint) -> VoidResult=0
Connects to a remote endpoint using host/port.
Core interface for data transport abstraction.
Definition i_transport.h:73
Core interface for data transport abstraction.
Callback functions for connection events.
Definition types.h:154
Configuration options for connections.
Definition types.h:198
Network endpoint information (host/port or URL)
Definition types.h:56
Network endpoint types (host/port, URL) and common type aliases.