Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
i_websocket_client.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2024, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
5#pragma once
6
8
9#include <cstdint>
10#include <functional>
11#include <string>
12#include <string_view>
13#include <system_error>
14#include <vector>
15
17
19{
20
42 {
43 public:
45 using text_callback_t = std::function<void(const std::string&)>;
46
48 using binary_callback_t = std::function<void(const std::vector<uint8_t>&)>;
49
51 using connected_callback_t = std::function<void()>;
52
54 using disconnected_callback_t = std::function<void(uint16_t code, std::string_view reason)>;
55
57 using error_callback_t = std::function<void(std::error_code)>;
58
60 using send_callback_t = std::function<void(std::error_code, std::size_t)>;
61
82 [[nodiscard]] virtual auto start(
83 std::string_view host,
84 uint16_t port,
85 std::string_view path = "/") -> VoidResult = 0;
86
97 [[nodiscard]] virtual auto stop() -> VoidResult = 0;
98
103 [[nodiscard]] virtual auto is_connected() const -> bool = 0;
104
114 [[nodiscard]] virtual auto send_text(
115 std::string&& message,
116 send_callback_t handler = nullptr) -> VoidResult = 0;
117
127 [[nodiscard]] virtual auto send_binary(
128 std::vector<uint8_t>&& data,
129 send_callback_t handler = nullptr) -> VoidResult = 0;
130
136 [[nodiscard]] virtual auto ping(std::vector<uint8_t>&& payload = {}) -> VoidResult = 0;
137
144 [[nodiscard]] virtual auto close(
145 uint16_t code = 1000,
146 std::string_view reason = "") -> VoidResult = 0;
147
152 virtual auto set_text_callback(text_callback_t callback) -> void = 0;
153
158 virtual auto set_binary_callback(binary_callback_t callback) -> void = 0;
159
164 virtual auto set_connected_callback(connected_callback_t callback) -> void = 0;
165
170 virtual auto set_disconnected_callback(disconnected_callback_t callback) -> void = 0;
171
176 virtual auto set_error_callback(error_callback_t callback) -> void = 0;
177 };
178
179} // namespace kcenon::network::interfaces
Base interface for all network components.
Interface for WebSocket client components.
std::function< void(std::error_code, std::size_t)> send_callback_t
Callback type for send completion.
virtual auto set_connected_callback(connected_callback_t callback) -> void=0
Sets the callback for connection established.
virtual auto close(uint16_t code=1000, std::string_view reason="") -> VoidResult=0
Closes the WebSocket connection gracefully.
virtual auto send_binary(std::vector< uint8_t > &&data, send_callback_t handler=nullptr) -> VoidResult=0
Sends a binary message.
std::function< void()> connected_callback_t
Callback type for connection established.
virtual auto ping(std::vector< uint8_t > &&payload={}) -> VoidResult=0
Sends a ping frame.
virtual auto start(std::string_view host, uint16_t port, std::string_view path="/") -> VoidResult=0
Starts the WebSocket client connecting to the specified endpoint.
std::function< void(const std::vector< uint8_t > &)> binary_callback_t
Callback type for binary messages.
virtual auto set_disconnected_callback(disconnected_callback_t callback) -> void=0
Sets the callback for disconnection.
virtual auto stop() -> VoidResult=0
Stops the WebSocket client.
std::function< void(const std::string &)> text_callback_t
Callback type for text messages.
virtual auto set_text_callback(text_callback_t callback) -> void=0
Sets the callback for text messages.
std::function< void(std::error_code)> error_callback_t
Callback type for errors.
virtual auto set_binary_callback(binary_callback_t callback) -> void=0
Sets the callback for binary messages.
virtual auto send_text(std::string &&message, send_callback_t handler=nullptr) -> VoidResult=0
Sends a text message.
virtual auto is_connected() const -> bool=0
Checks if the WebSocket connection is established.
virtual auto set_error_callback(error_callback_t callback) -> void=0
Sets the callback for errors.
std::function< void(uint16_t code, std::string_view reason)> disconnected_callback_t
Callback type for disconnection (with close code and reason)
Base interface for all network components.
Network-specific error and result type definitions.