Skip to content

Commit d0ae1a3

Browse files
committed
Updated API handling
1 parent 75144cd commit d0ae1a3

File tree

9 files changed

+36
-66
lines changed

9 files changed

+36
-66
lines changed

clipboard/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
#include <string.h>
1010

1111
#include "libclipboard/include/libclipboard.h"
12-
#include "var.h"
13-
#include "param.h"
12+
#include "include/var.h"
13+
#include "include/param.h"
1414

1515
clipboard_c *clipboard;
1616

glfw/main.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include <unordered_map>
1818

1919
#include "include/var.h"
20-
#include "include/var_map.h"
2120
#include "include/module.h"
2221
#include "include/param.h"
2322

imgui/imgui

Submodule imgui updated 66 files

include/param.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ void error(var_p_t var, const char *field, int n);
2727
void error(var_p_t var, const char *text);
2828
void map_init(var_p_t map);
2929
void map_init_id(var_p_t map, int id);
30+
void map_set_int(var_p_t base, const char *name, var_int_t n);
3031
bool get_bool(var_p_t var);
3132
bool is_array(var_p_t var, uint32_t size);
3233
bool is_map(var_p_t var);
@@ -36,6 +37,7 @@ bool is_param_num(int argc, slib_par_t *params, int n);
3637
bool is_param_str(int argc, slib_par_t *params, int n);
3738
bool is_param_map(int argc, slib_par_t *params, int n);
3839
bool is_param_nil(int argc, slib_par_t *params, int n);
40+
int map_get_bool(var_p_t base, const char *name);
3941
int get_param_int(int argc, slib_par_t *params, int n, int def);
4042
int set_param_int(int argc, slib_par_t *params, int n, int value, var_t *retval);
4143
var_num_t get_num(var_p_t var);

nuklear/main.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,9 @@
2424
#include <cstring>
2525

2626
#include "Nuklear/nuklear.h"
27-
#include "var.h"
28-
#include "var_map.h"
29-
#include "module.h"
30-
#include "param.h"
27+
#include "include/var.h"
28+
#include "include/module.h"
29+
#include "include/param.h"
3130

3231
nk_context *nkp_create_window(const char *title, int width, int height);
3332
bool nkp_process_events();

raylib/raygui

Submodule raygui updated 1 file

websocket/main.cpp

Lines changed: 25 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
#include <string>
1212

1313
#include "mongoose/mongoose.h"
14-
#include "var.h"
15-
#include "var_map.h"
16-
#include "param.h"
14+
#include "include/var.h"
15+
#include "include/param.h"
1716

1817
#define MAX_POLL_SLEEP 100
1918

@@ -22,7 +21,7 @@ mg_mgr manager;
2221
int nextHandle = 0;
2322
struct Session;
2423
std::map<int, Session *> sessions;
25-
mg_serve_http_opts s_http_server_opts;
24+
bool web_directory = false;
2625

2726
enum ConnectionState {
2827
kInit = 0,
@@ -58,26 +57,25 @@ static void session_close(Session *session) {
5857
}
5958
}
6059

61-
static void server_frame(mg_connection *conn, websocket_message *message, Session *session) {
60+
static void server_frame(mg_connection *conn, mg_ws_message *message, Session *session) {
6261
if (session != nullptr) {
6362
session->_recv.clear();
64-
session->_recv.append((char *)message->data, message->size);
65-
}
66-
for (mg_connection *c = mg_next(conn->mgr, nullptr); c != nullptr; c = mg_next(conn->mgr, c)) {
67-
if (c != conn) {
68-
mg_send_websocket_frame(c, WEBSOCKET_OP_TEXT, message->data, message->size);
69-
}
63+
session->_recv.append((char *)message->data.ptr, message->data.len);
7064
}
65+
mg_ws_send(conn, message->data.ptr, message->data.len, WEBSOCKET_OP_TEXT);
66+
mg_iobuf_delete(&conn->recv, conn->recv.len);
7167
}
7268

7369
static void server_handler(mg_connection *conn, int event, void *eventData, void *session) {
7470
switch (event) {
75-
case MG_EV_WEBSOCKET_FRAME:
76-
server_frame(conn, (websocket_message *)eventData, (Session *)session);
71+
case MG_EV_WS_MSG:
72+
server_frame(conn, (mg_ws_message *)eventData, (Session *)session);
7773
break;
7874

79-
case MG_EV_HTTP_REQUEST:
80-
mg_serve_http(conn, (http_message *)eventData, s_http_server_opts);
75+
case MG_EV_HTTP_MSG:
76+
if (web_directory) {
77+
mg_http_serve_dir(conn, (mg_http_message *)eventData, ".");
78+
}
8179
break;
8280

8381
default:
@@ -91,29 +89,15 @@ static void client_connect(Session *session, int status) {
9189
}
9290
}
9391

94-
static void client_handshake(Session *session, http_message *message) {
95-
if (session != nullptr && session->_state == kConnect && message->resp_code == 101) {
96-
session->_state = kOpen;
97-
}
98-
}
99-
100-
static void client_receive_frame(Session *session, websocket_message *message) {
101-
if (session != nullptr) {
102-
session->_recv.clear();
103-
session->_recv.append((char *)message->data, message->size);
104-
}
105-
}
106-
10792
static void client_receive(Session *session, mg_connection *conn) {
108-
if (session != nullptr && conn->recv_mbuf.len && session->_state == kOpen) {
93+
if (session != nullptr && conn->recv.len && session->_state == kOpen) {
10994
session->_recv.clear();
110-
if ((unsigned char)conn->recv_mbuf.buf[0] > 128) {
95+
if ((unsigned char)conn->recv.buf[0] > 128) {
11196
// spurious first char?
112-
session->_recv.append((char *)conn->recv_mbuf.buf + 1, conn->recv_mbuf.len - 1);
97+
session->_recv.append((char *)conn->recv.buf + 1, conn->recv.len - 1);
11398
} else {
114-
session->_recv.append((char *)conn->recv_mbuf.buf, conn->recv_mbuf.len);
99+
session->_recv.append((char *)conn->recv.buf, conn->recv.len);
115100
}
116-
mbuf_remove(&conn->recv_mbuf, conn->recv_mbuf.len);
117101
}
118102
}
119103

@@ -123,23 +107,15 @@ static void client_handler(mg_connection *conn, int event, void *eventData, void
123107
client_connect((Session *)session, *((int *)eventData));
124108
break;
125109

126-
case MG_EV_RECV:
110+
case MG_EV_READ:
127111
client_receive((Session *)session, conn);
128112
break;
129113

130114
case MG_EV_CLOSE:
131115
session_close((Session *)session);
132116
break;
133117

134-
case MG_EV_WEBSOCKET_HANDSHAKE_DONE:
135-
client_handshake((Session *)session, (http_message *)eventData);
136-
break;
137-
138-
case MG_EV_WEBSOCKET_FRAME:
139-
client_receive_frame((Session *)session, (websocket_message *)eventData);
140-
break;
141-
142-
case MG_EV_WEBSOCKET_CONTROL_FRAME:
118+
case MG_EV_ERROR:
143119
break;
144120

145121
default:
@@ -157,7 +133,7 @@ Session *get_session(int argc, slib_par_t *params) {
157133
int cmd_close(int argc, slib_par_t *params, var_t *retval) {
158134
auto session = get_session(argc, params);
159135
if (session != nullptr) {
160-
session->_conn->flags |= MG_F_CLOSE_IMMEDIATELY;
136+
session->_conn->is_closing = 1;
161137
}
162138
return argc == 1;
163139
}
@@ -196,7 +172,7 @@ int cmd_send(int argc, slib_par_t *params, var_t *retval) {
196172
if (session != nullptr) {
197173
const char *message = get_param_str(argc, params, 1, nullptr);
198174
if (message != nullptr && message[0] != '\0') {
199-
mg_send_websocket_frame(session->_conn, WEBSOCKET_OP_TEXT, message, strlen(message));
175+
mg_ws_send(session->_conn, message, strlen(message), WEBSOCKET_OP_TEXT);
200176
} else {
201177
v_setstr(retval, "Send failed");
202178
result = 0;
@@ -214,7 +190,7 @@ int cmd_create(int argc, slib_par_t *params, var_t *retval) {
214190
const char *protocol = get_param_str(argc, params, 1, nullptr);
215191
if (url != nullptr) {
216192
auto session = new Session();
217-
mg_connection *conn = mg_connect_ws(&manager, client_handler, session, url, protocol, nullptr);
193+
mg_connection *conn = mg_ws_connect(&manager, url, client_handler, session, protocol);
218194
if (conn == nullptr) {
219195
delete session;
220196
v_setstr(retval, "Connection failed");
@@ -237,18 +213,12 @@ int cmd_listen(int argc, slib_par_t *params, var_t *retval) {
237213
const char *port = get_param_str(argc, params, 0, nullptr);
238214
if (port != nullptr) {
239215
auto session = new Session();
240-
mg_connection *conn = mg_bind(&manager, port, server_handler, session);
216+
mg_connection *conn = mg_http_listen(&manager, port, server_handler, session);
241217
if (conn == nullptr) {
242218
delete session;
243219
v_setstr(retval, "Listen failed");
244220
} else {
245-
mg_set_protocol_http_websocket(conn);
246-
if (get_param_int(argc, params, 1, 0) == 1) {
247-
s_http_server_opts.document_root = ".";
248-
s_http_server_opts.enable_directory_listing = "yes";
249-
} else {
250-
s_http_server_opts.enable_directory_listing = "no";
251-
}
221+
web_directory = (get_param_int(argc, params, 1, 0) == 1);
252222
v_setint(retval, session->_handle);
253223
session->_conn = conn;
254224
result = 1;
@@ -329,7 +299,7 @@ int sblib_events(int wait_flag, int *w, int *h) {
329299
int sblib_init(const char *sourceFile) {
330300
signal(SIGTERM, signal_handler);
331301
signal(SIGINT, signal_handler);
332-
mg_mgr_init(&manager, nullptr);
302+
mg_mgr_init(&manager);
333303
return 1;
334304
}
335305

websocket/mongoose

Submodule mongoose updated 858 files

0 commit comments

Comments
 (0)