Mercurial
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 |