annotate seobeo/seobeo_internal.h @ 194:fb28063dc490 hg-web

Adding few more images.
author MrJuneJune <me@mrjunejune.com>
date Sun, 25 Jan 2026 20:19:42 -0800
parents 8cf4ec5e2191
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
1 #ifndef SEOBEO_SERVER_INTERNAL_H
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
2 #define SEOBEO_SERVER_INTERNAL_H
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
3
67
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
4 #ifndef SEOBEO_NO_SSL
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
5 #include <openssl/ssl.h>
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
6 #include <openssl/err.h>
67
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
7 #define SSL_CTX_TYPE SSL_CTX
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
8 #define SSL_TYPE SSL
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
9 #else
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
10 #define SSL_CTX_TYPE void
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
11 #define SSL_TYPE void
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
12 #endif
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
13
121
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
14 // For web socket usages as body length are determine this...
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
15 #define MAX_INT_16 65536
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
16 #define MAX_FRAGMENT_SIZE 1024 * 1024
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
17
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
18 #include "dowa/dowa.h"
96
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents: 72
diff changeset
19 #include <stdatomic.h>
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
20
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
21 typedef enum {
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
22 SEOBEO_STREAM_TYPE_SERVER,
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
23 SEOBEO_STREAM_TYPE_CLIENT,
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
24 } Seobeo_SocketType;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
25
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
26 typedef struct {
183
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
27 int32 socket;
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
28 Seobeo_SocketType type;
183
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
29 boolean connected;
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
30
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
31 char *host;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
32 char *port;
67
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
33
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
34 SSL_CTX_TYPE *ssl_ctx;
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
35 SSL_TYPE *ssl;
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
36
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
37 uint8 *read_buffer;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
38 uint32 read_buffer_capacity;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
39 uint32 read_buffer_len; // current size
183
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
40 uint32 read_buffer_used; // TODO: Implement this for client
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
41
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
42 uint8 *write_buffer;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
43 uint32 write_buffer_capacity;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
44 uint32 write_buffer_len; // current size
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
45
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
46 void *file;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
47 void *text_copy;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
48 char *file_name;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
49
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
50 atomic_bool destroyed;
183
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
51
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
52 // Keep-alive support
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
53 time_t last_activity; // Timestamp of last request/response
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
54 boolean keep_alive; // Whether this connection should be kept alive
66
a0f0ad5e42eb [Misc] taking out capital P stuff.
June Park <parkjune1995@gmail.com>
parents: 65
diff changeset
55 } Seobeo_Handle;
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
56
132
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
57 // Cached file entry with content and size (for binary file support)
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
58 typedef struct {
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
59 char *content;
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
60 size_t size;
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
61 } Seobeo_Cached_File;
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
62
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
63 // HTML cache type: maps file paths (char*) to cached file entries (Seobeo_Cached_File*)
7a63e41a21fb [Seobeo] Added debug targets.
June Park <parkjune1995@gmail.com>
parents: 125
diff changeset
64 typedef Dowa_KV(char*, Seobeo_Cached_File*) Seobeo_Cache_Entry;
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
65
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
66 typedef struct {
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
67 Seobeo_Handle *srv;
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
68 Seobeo_Cache_Entry *cache;
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
69 } WorkerArgs;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
70
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
71 typedef enum {
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
72 SEOBEO_MODE_FORK,
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
73 SEOBEO_MODE_EDGE,
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
74 } Seobeo_ServerMode;
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
75
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
76
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
77 // HTTP request map type: maps header names to header values
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
78 typedef Dowa_KV(char*, char*) Seobeo_Request_Entry;
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
79
72
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
80 // --- Router Types --- //
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
81 // Forward declaration
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
82 typedef struct Seobeo_Route_Struct Seobeo_Route;
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
83
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
84 // Route handler function type
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
85 typedef Seobeo_Request_Entry* (*Seobeo_Route_Handler)(
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
86 Seobeo_Request_Entry *p_request_map,
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
87 Dowa_Arena *p_arena
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
88 );
4532ce6d9eb8 [Seobeo] Added router to the server logic. Few dowa string manipulation logics.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
89
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
90 // Streaming handler - gets direct access to client handle for streaming responses
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
91 typedef void (*Seobeo_Stream_Handler)(
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
92 Seobeo_Handle *p_client_handle,
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
93 Seobeo_Request_Entry *p_request_map,
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
94 Dowa_Arena *p_arena
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
95 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
96
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
97 // --- Parse Header into Dowa Map ---//
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
98 extern int Seobeo_Web_Header_Parse(Seobeo_Handle *p_handle, Seobeo_Request_Entry **pp_map, Dowa_Arena *p_arena);
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
99
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
100 // --- Handle Request --- //
183
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
101 /* Handle a client request. Returns TRUE if connection should be kept alive. */
a8976a008a9d [BenchMark] Added bun bench mark to test seoboe vs other popular benchmarks.
MrJuneJune <me@mrjunejune.com>
parents: 132
diff changeset
102 extern boolean Seobeo_Web_ClientHandle_Request(Seobeo_Handle *p_cli_handle, Seobeo_Cache_Entry *p_html_cache, boolean use_keep_alive);
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
103
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
104 // --- SSL --- //
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
105 extern void Seobeo_Web_SSL_Init();
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
106 extern void Seobeo_Web_SSL_Cleanup(); // Not used
67
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
107 extern int Seobeo_SSL_Setup_Client(Seobeo_Handle *p_handle, const char *host, int socket_fd);
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
108 extern void Seobeo_SSL_Cleanup(Seobeo_Handle *p_handle);
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
109 extern int32 Seobeo_SSL_Write(Seobeo_Handle *p_handle, const uint8 *data, uint32 length);
6626ec933933 [Seobeo] Separated out Client Server logic. Created test tools.
June Park <parkjune1995@gmail.com>
parents: 66
diff changeset
110 extern int32 Seobeo_SSL_Read(Seobeo_Handle *p_handle, uint8 *buffer, uint32 length);
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
111
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
112 // --- Serving using Edge --- //
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
113 extern void *Seobeo_Web_Edge_Worker(void *vargs);
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 67
diff changeset
114 extern void Seobeo_Web_Edge(Seobeo_Handle *p_server_handle, int thread_count, Seobeo_Cache_Entry *p_html_cache);
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
115
119
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
116 // --- HTTP Client Types --- //
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
117 typedef struct {
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
118 char *method;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
119 char *url;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
120 char *host;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
121 char *port;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
122 char *path;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
123 boolean use_tls;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
124
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
125 // Headers can be either HashMap or Array
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
126 Seobeo_Request_Entry *headers_map;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
127 char **headers_array;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
128
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
129 char *body;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
130 size_t body_length;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
131
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
132 boolean follow_redirects;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
133 int32 max_redirects;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
134
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
135 char *download_path;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
136
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
137 Dowa_Arena *p_arena;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
138 } Seobeo_Client_Request;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
139
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
140 typedef struct {
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
141 int32 status_code;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
142 char *status_text;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
143
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
144 Seobeo_Request_Entry *headers;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
145
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
146 char *body;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
147 size_t body_length;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
148
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
149 char *redirect_url;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
150
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
151 Dowa_Arena *p_arena;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
152 } Seobeo_Client_Response;
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
153
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
154 // --- HTTP Client Functions --- //
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
155 extern Seobeo_Client_Request *Seobeo_Client_Request_Create(const char *url);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
156 extern void Seobeo_Client_Request_Set_Method(Seobeo_Client_Request *p_req, const char *method);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
157 extern void Seobeo_Client_Request_Add_Header_Map(Seobeo_Client_Request *p_req, const char *key, const char *value);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
158 extern void Seobeo_Client_Request_Add_Header_Array(Seobeo_Client_Request *p_req, const char *header);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
159 extern void Seobeo_Client_Request_Set_Body(Seobeo_Client_Request *p_req, const char *body, size_t length);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
160 extern void Seobeo_Client_Request_Set_Follow_Redirects(Seobeo_Client_Request *p_req, boolean follow, int32 max_redirects);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
161 extern void Seobeo_Client_Request_Set_Download_Path(Seobeo_Client_Request *p_req, const char *path);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
162 extern Seobeo_Client_Response *Seobeo_Client_Request_Execute(Seobeo_Client_Request *p_req);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
163 extern void Seobeo_Client_Request_Destroy(Seobeo_Client_Request *p_req);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
164 extern void Seobeo_Client_Response_Destroy(Seobeo_Client_Response *p_resp);
c39582f937e5 [Seobeo Client] Added client side logic which will be used for all my other calls instead of curl.
June Park <parkjune1995@gmail.com>
parents: 96
diff changeset
165
120
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
166 // --- WebSocket Types --- //
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
167 typedef enum {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
168 SEOBEO_WS_OPCODE_CONTINUATION = 0x0,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
169 SEOBEO_WS_OPCODE_TEXT = 0x1,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
170 SEOBEO_WS_OPCODE_BINARY = 0x2,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
171 SEOBEO_WS_OPCODE_CLOSE = 0x8,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
172 SEOBEO_WS_OPCODE_PING = 0x9,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
173 SEOBEO_WS_OPCODE_PONG = 0xA
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
174 } Seobeo_WebSocket_Opcode;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
175
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
176 typedef enum {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
177 SEOBEO_WS_STATE_CONNECTING = 0,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
178 SEOBEO_WS_STATE_OPEN,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
179 SEOBEO_WS_STATE_CLOSING,
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
180 SEOBEO_WS_STATE_CLOSED
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
181 } Seobeo_WebSocket_State;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
182
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
183 typedef struct {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
184 Seobeo_WebSocket_Opcode opcode;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
185 uint8 *data;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
186 size_t length;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
187 boolean is_final;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
188 } Seobeo_WebSocket_Message;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
189
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
190 typedef struct {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
191 Seobeo_Handle *p_handle;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
192 char *url;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
193 char *host;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
194 char *port;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
195 char *path;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
196 boolean use_tls;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
197
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
198 Seobeo_WebSocket_State state;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
199
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
200 uint8 *fragment_buffer;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
201 size_t fragment_length;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
202 size_t fragment_capacity;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
203 Seobeo_WebSocket_Opcode fragment_opcode;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
204
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
205 Dowa_Arena *p_arena;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
206 } Seobeo_WebSocket;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
207
125
f236c895604e [MrJuneJune] Added web socket for chat to this.
June Park <parkjune1995@gmail.com>
parents: 121
diff changeset
208 // --- WebSocket Common Functions --- //
f236c895604e [MrJuneJune] Added web socket for chat to this.
June Park <parkjune1995@gmail.com>
parents: 121
diff changeset
209 extern void Seobeo_WebSocket_Mask_Data(uint8 *data, size_t length, const uint8 *mask);
f236c895604e [MrJuneJune] Added web socket for chat to this.
June Park <parkjune1995@gmail.com>
parents: 121
diff changeset
210 extern void Seobeo_WebSocket_Message_Destroy(Seobeo_WebSocket_Message *p_msg);
f236c895604e [MrJuneJune] Added web socket for chat to this.
June Park <parkjune1995@gmail.com>
parents: 121
diff changeset
211
121
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
212 // --- WebSocket Client Functions --- //
120
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
213 extern Seobeo_WebSocket *Seobeo_WebSocket_Connect(const char *url);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
214 extern int32 Seobeo_WebSocket_Send_Text(Seobeo_WebSocket *p_ws, const char *text);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
215 extern int32 Seobeo_WebSocket_Send_Binary(Seobeo_WebSocket *p_ws, const uint8 *data, size_t length);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
216 extern int32 Seobeo_WebSocket_Send_Ping(Seobeo_WebSocket *p_ws, const char *payload);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
217 extern int32 Seobeo_WebSocket_Send_Pong(Seobeo_WebSocket *p_ws, const char *payload);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
218 extern Seobeo_WebSocket_Message *Seobeo_WebSocket_Receive(Seobeo_WebSocket *p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
219 extern int32 Seobeo_WebSocket_Close(Seobeo_WebSocket *p_ws, uint16 code, const char *reason);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
220 extern void Seobeo_WebSocket_Destroy(Seobeo_WebSocket *p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents: 119
diff changeset
221
121
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
222 // --- WebSocket Server Types --- //
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
223 typedef struct Seobeo_WebSocket_Server_Connection_Struct Seobeo_WebSocket_Server_Connection;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
224
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
225 struct Seobeo_WebSocket_Server_Connection_Struct {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
226 Seobeo_Handle *p_handle;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
227 char *client_id;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
228 boolean is_active;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
229
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
230 uint8 *fragment_buffer;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
231 size_t fragment_length;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
232 size_t fragment_capacity;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
233 Seobeo_WebSocket_Opcode fragment_opcode;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
234
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
235 Seobeo_WebSocket_Server_Connection *next;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
236 };
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
237
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
238 typedef void (*Seobeo_WebSocket_Server_Handler)(
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
239 Seobeo_WebSocket_Server_Connection *p_conn,
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
240 Seobeo_WebSocket_Message *p_msg,
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
241 void *p_user_data
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
242 );
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
243
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
244 typedef struct {
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
245 char *path;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
246 Seobeo_WebSocket_Server_Handler handler;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
247 void *p_user_data;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
248 } Seobeo_WebSocket_Server_Route;
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
249
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
250 // --- WebSocket Server Functions --- //
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
251 extern void Seobeo_WebSocket_Server_Init();
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
252 extern void Seobeo_WebSocket_Server_Register(const char *path, Seobeo_WebSocket_Server_Handler handler, void *p_user_data);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
253 extern boolean Seobeo_WebSocket_Server_Handle_Upgrade(Seobeo_Handle *p_handle, Seobeo_Request_Entry *p_req_map, const char *path);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
254 extern void Seobeo_WebSocket_Server_Handle_Connection(Seobeo_WebSocket_Server_Connection *p_conn);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
255 extern int32 Seobeo_WebSocket_Server_Send_Text(Seobeo_WebSocket_Server_Connection *p_conn, const char *text);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
256 extern int32 Seobeo_WebSocket_Server_Send_Binary(Seobeo_WebSocket_Server_Connection *p_conn, const uint8 *data, size_t length);
125
f236c895604e [MrJuneJune] Added web socket for chat to this.
June Park <parkjune1995@gmail.com>
parents: 121
diff changeset
257 extern void Seobeo_WebSocket_Server_Broadcast_Text(const char *text, Seobeo_WebSocket_Server_Connection *origin_p_conn);
121
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
258 extern void Seobeo_WebSocket_Server_Broadcast_Binary(const uint8 *data, size_t length);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
259 extern void Seobeo_WebSocket_Server_Connection_Close(Seobeo_WebSocket_Server_Connection *p_conn, uint16 code, const char *reason);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
260 extern void Seobeo_WebSocket_Server_Connection_Destroy(Seobeo_WebSocket_Server_Connection *p_conn);
7b1719fa918c [Seobeo] Added web socket server.
June Park <parkjune1995@gmail.com>
parents: 120
diff changeset
261
19
875bb6e10db7 [Seobeo] Chaning Function naming to be easily readable.
June Park <parkjune1995@gmail.com>
parents: 1
diff changeset
262 #endif