yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
websocket_interface.h
Go to the documentation of this file.
1#ifndef YAZE_APP_NET_WEBSOCKET_INTERFACE_H_
2#define YAZE_APP_NET_WEBSOCKET_INTERFACE_H_
3
4#include <functional>
5#include <string>
6
7#include "absl/status/status.h"
8
9namespace yaze {
10namespace net {
11
16enum class WebSocketState {
17 kDisconnected, // Not connected
18 kConnecting, // Connection in progress
19 kConnected, // Successfully connected
20 kClosing, // Close handshake in progress
21 kClosed, // Connection closed
22 kError // Error state
23};
24
34 public:
35 // Callback types for WebSocket events
36 using MessageCallback = std::function<void(const std::string& message)>;
37 using BinaryMessageCallback = std::function<void(const uint8_t* data, size_t length)>;
38 using OpenCallback = std::function<void()>;
39 using CloseCallback = std::function<void(int code, const std::string& reason)>;
40 using ErrorCallback = std::function<void(const std::string& error)>;
41
42 virtual ~IWebSocket() = default;
43
49 virtual absl::Status Connect(const std::string& url) = 0;
50
56 virtual absl::Status Send(const std::string& message) = 0;
57
64 virtual absl::Status SendBinary(const uint8_t* data, size_t length) {
65 // Default implementation - can be overridden if binary is supported
66 return absl::UnimplementedError("Binary messages not implemented");
67 }
68
75 virtual absl::Status Close(int code = 1000,
76 const std::string& reason = "") = 0;
77
82 virtual WebSocketState GetState() const = 0;
83
88 virtual bool IsConnected() const {
90 }
91
96 virtual void OnMessage(MessageCallback callback) = 0;
97
102 virtual void OnBinaryMessage(BinaryMessageCallback callback) {
103 // Default implementation - can be overridden if binary is supported
104 binary_message_callback_ = callback;
105 }
106
111 virtual void OnOpen(OpenCallback callback) = 0;
112
117 virtual void OnClose(CloseCallback callback) = 0;
118
123 virtual void OnError(ErrorCallback callback) = 0;
124
129 virtual std::string GetUrl() const { return url_; }
130
136 virtual void SetAutoReconnect(bool enable, int delay_seconds = 5) {
137 auto_reconnect_ = enable;
138 reconnect_delay_seconds_ = delay_seconds;
139 }
140
141 protected:
142 std::string url_;
144
145 // Callbacks (may be used by implementations)
151
152 // Auto-reconnect settings
153 bool auto_reconnect_ = false;
155};
156
157} // namespace net
158} // namespace yaze
159
160#endif // YAZE_APP_NET_WEBSOCKET_INTERFACE_H_
Abstract interface for WebSocket client implementations.
virtual absl::Status Close(int code=1000, const std::string &reason="")=0
Close the WebSocket connection.
virtual void OnClose(CloseCallback callback)=0
Set callback for connection close events.
virtual void OnBinaryMessage(BinaryMessageCallback callback)
Set callback for binary message events.
virtual absl::Status SendBinary(const uint8_t *data, size_t length)
Send a binary message.
virtual void OnError(ErrorCallback callback)=0
Set callback for error events.
virtual ~IWebSocket()=default
virtual std::string GetUrl() const
Get the WebSocket URL.
virtual void SetAutoReconnect(bool enable, int delay_seconds=5)
Set automatic reconnection.
virtual absl::Status Send(const std::string &message)=0
Send a text message.
std::function< void(const std::string &message)> MessageCallback
virtual void OnMessage(MessageCallback callback)=0
Set callback for text message events.
virtual WebSocketState GetState() const =0
Get the current connection state.
virtual absl::Status Connect(const std::string &url)=0
Connect to a WebSocket server.
virtual void OnOpen(OpenCallback callback)=0
Set callback for connection open events.
virtual bool IsConnected() const
Check if the WebSocket is connected.
std::function< void(const std::string &error)> ErrorCallback
std::function< void(const uint8_t *data, size_t length)> BinaryMessageCallback
BinaryMessageCallback binary_message_callback_
MessageCallback message_callback_
std::function< void()> OpenCallback
std::function< void(int code, const std::string &reason)> CloseCallback
WebSocketState
WebSocket connection states.