comparison seobeo/seobeo_internal.h @ 120:cbbf78b17cfa

[Seobeo][Websocket] Created Web socket client logic.
author June Park <parkjune1995@gmail.com>
date Thu, 08 Jan 2026 03:19:59 -0800
parents c39582f937e5
children 7b1719fa918c
comparison
equal deleted inserted replaced
119:c39582f937e5 120:cbbf78b17cfa
139 extern void Seobeo_Client_Request_Set_Download_Path(Seobeo_Client_Request *p_req, const char *path); 139 extern void Seobeo_Client_Request_Set_Download_Path(Seobeo_Client_Request *p_req, const char *path);
140 extern Seobeo_Client_Response *Seobeo_Client_Request_Execute(Seobeo_Client_Request *p_req); 140 extern Seobeo_Client_Response *Seobeo_Client_Request_Execute(Seobeo_Client_Request *p_req);
141 extern void Seobeo_Client_Request_Destroy(Seobeo_Client_Request *p_req); 141 extern void Seobeo_Client_Request_Destroy(Seobeo_Client_Request *p_req);
142 extern void Seobeo_Client_Response_Destroy(Seobeo_Client_Response *p_resp); 142 extern void Seobeo_Client_Response_Destroy(Seobeo_Client_Response *p_resp);
143 143
144 // --- WebSocket Types --- //
145 typedef enum {
146 SEOBEO_WS_OPCODE_CONTINUATION = 0x0,
147 SEOBEO_WS_OPCODE_TEXT = 0x1,
148 SEOBEO_WS_OPCODE_BINARY = 0x2,
149 SEOBEO_WS_OPCODE_CLOSE = 0x8,
150 SEOBEO_WS_OPCODE_PING = 0x9,
151 SEOBEO_WS_OPCODE_PONG = 0xA
152 } Seobeo_WebSocket_Opcode;
153
154 typedef enum {
155 SEOBEO_WS_STATE_CONNECTING = 0,
156 SEOBEO_WS_STATE_OPEN,
157 SEOBEO_WS_STATE_CLOSING,
158 SEOBEO_WS_STATE_CLOSED
159 } Seobeo_WebSocket_State;
160
161 typedef struct {
162 Seobeo_WebSocket_Opcode opcode;
163 uint8 *data;
164 size_t length;
165 boolean is_final;
166 } Seobeo_WebSocket_Message;
167
168 typedef struct {
169 Seobeo_Handle *p_handle;
170 char *url;
171 char *host;
172 char *port;
173 char *path;
174 boolean use_tls;
175
176 Seobeo_WebSocket_State state;
177
178 uint8 *fragment_buffer;
179 size_t fragment_length;
180 size_t fragment_capacity;
181 Seobeo_WebSocket_Opcode fragment_opcode;
182
183 Dowa_Arena *p_arena;
184 } Seobeo_WebSocket;
185
186 // --- WebSocket Functions --- //
187 extern Seobeo_WebSocket *Seobeo_WebSocket_Connect(const char *url);
188 extern int32 Seobeo_WebSocket_Send_Text(Seobeo_WebSocket *p_ws, const char *text);
189 extern int32 Seobeo_WebSocket_Send_Binary(Seobeo_WebSocket *p_ws, const uint8 *data, size_t length);
190 extern int32 Seobeo_WebSocket_Send_Ping(Seobeo_WebSocket *p_ws, const char *payload);
191 extern int32 Seobeo_WebSocket_Send_Pong(Seobeo_WebSocket *p_ws, const char *payload);
192 extern Seobeo_WebSocket_Message *Seobeo_WebSocket_Receive(Seobeo_WebSocket *p_ws);
193 extern void Seobeo_WebSocket_Message_Destroy(Seobeo_WebSocket_Message *p_msg);
194 extern int32 Seobeo_WebSocket_Close(Seobeo_WebSocket *p_ws, uint16 code, const char *reason);
195 extern void Seobeo_WebSocket_Destroy(Seobeo_WebSocket *p_ws);
196
144 #endif 197 #endif