allow for polling methods to return events

main
Dominik Madarász 2023-08-21 18:35:22 +02:00
parent 27b580dbd2
commit 849b7cfef7
7 changed files with 113 additions and 98 deletions

View File

@ -2124,17 +2124,17 @@ enum { NETWORK_USERID = 5, NETWORK_COUNT , NETWORK_CAPACITY };
void network_rpc(const char *signature, void *function); void network_rpc(const char *signature, void *function);
void network_rpc_send_to(int64_t rank, unsigned id, const char *cmdline); void network_rpc_send_to(int64_t rank, unsigned id, const char *cmdline);
void network_rpc_send(unsigned id, const char *cmdline); void network_rpc_send(unsigned id, const char *cmdline);
bool server_bind(int max_clients, int port); bool server_bind(int max_clients, int port);
void server_poll(unsigned timeout_ms); char** server_poll(unsigned timeout_ms);
void client_poll(unsigned timeout_ms); char** client_poll(unsigned timeout_ms);
void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags); void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags);
void server_broadcast_bin(const void *ptr, int len); void server_broadcast_bin(const void *ptr, int len);
void server_broadcast_flags(const char *msg, uint64_t flags); void server_broadcast_flags(const char *msg, uint64_t flags);
void server_broadcast(const char *msg); void server_broadcast(const char *msg);
void server_terminate(); void server_terminate();
void server_send(int64_t handle, const char *msg); void server_send(int64_t handle, const char *msg);
void server_send_bin(int64_t handle, const void *ptr, int len); void server_send_bin(int64_t handle, const void *ptr, int len);
void server_drop(int64_t handle); void server_drop(int64_t handle);
int64_t client_join(const char *ip, int port); int64_t client_join(const char *ip, int port);
void* obj_malloc( int sz, ... ); void* obj_malloc( int sz, ... );
void* obj_calloc( int sz, ... ); void* obj_calloc( int sz, ... );

View File

@ -15959,17 +15959,17 @@ API void network_rpc_send(unsigned id, const char *cmdline);
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// low-level api (sockets based) // low-level api (sockets based)
API bool server_bind(int max_clients, int port); API bool server_bind(int max_clients, int port);
API void server_poll(unsigned timeout_ms); API char** server_poll(unsigned timeout_ms);
API void client_poll(unsigned timeout_ms); API char** client_poll(unsigned timeout_ms);
API void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags); API void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags);
API void server_broadcast_bin(const void *ptr, int len); API void server_broadcast_bin(const void *ptr, int len);
API void server_broadcast_flags(const char *msg, uint64_t flags); API void server_broadcast_flags(const char *msg, uint64_t flags);
API void server_broadcast(const char *msg); API void server_broadcast(const char *msg);
API void server_terminate(); API void server_terminate();
API void server_send(int64_t handle, const char *msg); API void server_send(int64_t handle, const char *msg);
API void server_send_bin(int64_t handle, const void *ptr, int len); API void server_send_bin(int64_t handle, const void *ptr, int len);
API void server_drop(int64_t handle); API void server_drop(int64_t handle);
API int64_t client_join(const char *ip, int port); API int64_t client_join(const char *ip, int port);
#define client_send_flags(msg,flags) server_broadcast(msg, flags) #define client_send_flags(msg,flags) server_broadcast(msg, flags)
@ -338834,8 +338834,6 @@ int enet_event_to_netsync(int ev) {
} }
char** network_sync(unsigned timeout_ms) { char** network_sync(unsigned timeout_ms) {
array_clear(events);
int64_t whoami = network_get(NETWORK_RANK); int64_t whoami = network_get(NETWORK_RANK);
bool is_server = whoami == 0; bool is_server = whoami == 0;
bool is_client = !is_server; bool is_client = !is_server;
@ -338875,12 +338873,12 @@ char** network_sync(unsigned timeout_ms) {
client_poll(timeout_ms); client_poll(timeout_ms);
} }
array_push(events, NULL);
return events; return events;
} }
void server_poll(unsigned timeout_ms) { char** server_poll(unsigned timeout_ms) {
array_clear(events);
if(timeout_ms < 2) timeout_ms = 2; if(timeout_ms < 2) timeout_ms = 2;
// network poll // network poll
@ -339012,9 +339010,13 @@ void server_poll(unsigned timeout_ms) {
if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg)); if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg));
} }
array_push(events, NULL);
return events;
} }
void client_poll(unsigned timeout_ms) { char** client_poll(unsigned timeout_ms) {
array_clear(events);
int64_t whoami = network_get(NETWORK_RANK); int64_t whoami = network_get(NETWORK_RANK);
if(timeout_ms < 2) timeout_ms = 2; if(timeout_ms < 2) timeout_ms = 2;
@ -339118,6 +339120,9 @@ void client_poll(unsigned timeout_ms) {
if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg)); if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg));
} }
array_push(events, NULL);
return events;
} }
int network_event(const char *msg, int *errcode, char **errstr) { int network_event(const char *msg, int *errcode, char **errstr) {

View File

@ -372,8 +372,6 @@ int enet_event_to_netsync(int ev) {
} }
char** network_sync(unsigned timeout_ms) { char** network_sync(unsigned timeout_ms) {
array_clear(events);
int64_t whoami = network_get(NETWORK_RANK); int64_t whoami = network_get(NETWORK_RANK);
bool is_server = whoami == 0; bool is_server = whoami == 0;
bool is_client = !is_server; bool is_client = !is_server;
@ -413,12 +411,12 @@ char** network_sync(unsigned timeout_ms) {
client_poll(timeout_ms); client_poll(timeout_ms);
} }
array_push(events, NULL);
return events; return events;
} }
void server_poll(unsigned timeout_ms) { char** server_poll(unsigned timeout_ms) {
array_clear(events);
if(timeout_ms < 2) timeout_ms = 2; if(timeout_ms < 2) timeout_ms = 2;
// network poll // network poll
@ -550,9 +548,13 @@ void server_poll(unsigned timeout_ms) {
if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg)); if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg));
} }
array_push(events, NULL);
return events;
} }
void client_poll(unsigned timeout_ms) { char** client_poll(unsigned timeout_ms) {
array_clear(events);
int64_t whoami = network_get(NETWORK_RANK); int64_t whoami = network_get(NETWORK_RANK);
if(timeout_ms < 2) timeout_ms = 2; if(timeout_ms < 2) timeout_ms = 2;
@ -656,6 +658,9 @@ void client_poll(unsigned timeout_ms) {
if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg)); if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg));
} }
array_push(events, NULL);
return events;
} }
int network_event(const char *msg, int *errcode, char **errstr) { int network_event(const char *msg, int *errcode, char **errstr) {

View File

@ -56,17 +56,17 @@ API void network_rpc_send(unsigned id, const char *cmdline);
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// low-level api (sockets based) // low-level api (sockets based)
API bool server_bind(int max_clients, int port); API bool server_bind(int max_clients, int port);
API void server_poll(unsigned timeout_ms); API char** server_poll(unsigned timeout_ms);
API void client_poll(unsigned timeout_ms); API char** client_poll(unsigned timeout_ms);
API void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags); API void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags);
API void server_broadcast_bin(const void *ptr, int len); API void server_broadcast_bin(const void *ptr, int len);
API void server_broadcast_flags(const char *msg, uint64_t flags); API void server_broadcast_flags(const char *msg, uint64_t flags);
API void server_broadcast(const char *msg); API void server_broadcast(const char *msg);
API void server_terminate(); API void server_terminate();
API void server_send(int64_t handle, const char *msg); API void server_send(int64_t handle, const char *msg);
API void server_send_bin(int64_t handle, const void *ptr, int len); API void server_send_bin(int64_t handle, const void *ptr, int len);
API void server_drop(int64_t handle); API void server_drop(int64_t handle);
API int64_t client_join(const char *ip, int port); API int64_t client_join(const char *ip, int port);
#define client_send_flags(msg,flags) server_broadcast(msg, flags) #define client_send_flags(msg,flags) server_broadcast(msg, flags)

View File

@ -9849,8 +9849,6 @@ int enet_event_to_netsync(int ev) {
} }
char** network_sync(unsigned timeout_ms) { char** network_sync(unsigned timeout_ms) {
array_clear(events);
int64_t whoami = network_get(NETWORK_RANK); int64_t whoami = network_get(NETWORK_RANK);
bool is_server = whoami == 0; bool is_server = whoami == 0;
bool is_client = !is_server; bool is_client = !is_server;
@ -9890,12 +9888,12 @@ char** network_sync(unsigned timeout_ms) {
client_poll(timeout_ms); client_poll(timeout_ms);
} }
array_push(events, NULL);
return events; return events;
} }
void server_poll(unsigned timeout_ms) { char** server_poll(unsigned timeout_ms) {
array_clear(events);
if(timeout_ms < 2) timeout_ms = 2; if(timeout_ms < 2) timeout_ms = 2;
// network poll // network poll
@ -10027,9 +10025,13 @@ void server_poll(unsigned timeout_ms) {
if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg)); if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg));
} }
array_push(events, NULL);
return events;
} }
void client_poll(unsigned timeout_ms) { char** client_poll(unsigned timeout_ms) {
array_clear(events);
int64_t whoami = network_get(NETWORK_RANK); int64_t whoami = network_get(NETWORK_RANK);
if(timeout_ms < 2) timeout_ms = 2; if(timeout_ms < 2) timeout_ms = 2;
@ -10133,6 +10135,9 @@ void client_poll(unsigned timeout_ms) {
if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg)); if(msg) array_push(events, stringf("%d %s", enet_event_to_netsync(event.type), msg));
} }
array_push(events, NULL);
return events;
} }
int network_event(const char *msg, int *errcode, char **errstr) { int network_event(const char *msg, int *errcode, char **errstr) {

View File

@ -2042,17 +2042,17 @@ API void network_rpc_send(unsigned id, const char *cmdline);
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// low-level api (sockets based) // low-level api (sockets based)
API bool server_bind(int max_clients, int port); API bool server_bind(int max_clients, int port);
API void server_poll(unsigned timeout_ms); API char** server_poll(unsigned timeout_ms);
API void client_poll(unsigned timeout_ms); API char** client_poll(unsigned timeout_ms);
API void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags); API void server_broadcast_bin_flags(const void *ptr, int len, uint64_t flags);
API void server_broadcast_bin(const void *ptr, int len); API void server_broadcast_bin(const void *ptr, int len);
API void server_broadcast_flags(const char *msg, uint64_t flags); API void server_broadcast_flags(const char *msg, uint64_t flags);
API void server_broadcast(const char *msg); API void server_broadcast(const char *msg);
API void server_terminate(); API void server_terminate();
API void server_send(int64_t handle, const char *msg); API void server_send(int64_t handle, const char *msg);
API void server_send_bin(int64_t handle, const void *ptr, int len); API void server_send_bin(int64_t handle, const void *ptr, int len);
API void server_drop(int64_t handle); API void server_drop(int64_t handle);
API int64_t client_join(const char *ip, int port); API int64_t client_join(const char *ip, int port);
#define client_send_flags(msg,flags) server_broadcast(msg, flags) #define client_send_flags(msg,flags) server_broadcast(msg, flags)

View File

@ -596,7 +596,7 @@ details > summary::-webkit-details-marker {
|Version: | 2023.7 | |Version: | 2023.7 |
|:--------------|:------------| |:--------------|:------------|
|Branch: | main | |Branch: | main |
|Commit: | 55 | |Commit: | 56 |
<!--| Documentation last modified | { {LAST_MODIFIED} } |--> <!--| Documentation last modified | { {LAST_MODIFIED} } |-->
# [V·4·K 2023.7 ](https://dev.v4.games/zaklaus/v4k) # [V·4·K 2023.7 ](https://dev.v4.games/zaklaus/v4k)
@ -6693,7 +6693,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name="server_poll"></a> <a name="server_poll"></a>
<details><summary><code lang=C>🄵 API void server_poll(unsigned timeout_ms);</code></summary> <details><summary><code lang=C>🄵 API char** server_poll(unsigned timeout_ms);</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -6702,7 +6702,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name="client_poll"></a> <a name="client_poll"></a>
<details><summary><code lang=C>🄵 API void client_poll(unsigned timeout_ms);</code></summary> <details><summary><code lang=C>🄵 API char** client_poll(unsigned timeout_ms);</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8644,8 +8644,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
## shaders ## shaders
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_0_0_shadowmap_lit;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_0_0_shadowmap_lit;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8653,8 +8653,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_0_0_shadowmap_unlit;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_0_0_shadowmap_unlit;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8662,8 +8662,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_24_4_sprite;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_24_4_sprite;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8671,8 +8671,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_2_4_preamble;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_2_4_preamble;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8680,8 +8680,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_2_4_texel_inv_gamma;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_2_4_texel_inv_gamma;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8689,8 +8689,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_2_4_texel_ycbr_gamma_saturation;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_2_4_texel_ycbr_gamma_saturation;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8698,8 +8698,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_32_4_model;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_32_4_model;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8707,8 +8707,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_32_4_model_basic;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_32_4_model_basic;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8716,8 +8716,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_3_4_skybox;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_3_4_skybox;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8725,8 +8725,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_3_4_skybox_rayleigh;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_3_4_skybox_rayleigh;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8734,8 +8734,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const fs_main_shadertoy;</code></summary> <details><summary><code lang=C>🄴 extern const char* const fs_main_shadertoy;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8743,8 +8743,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_A;</code></summary> <details><summary><code lang=C>🄴 extern const char* const vs_0_2_fullscreen_quad_A;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8752,8 +8752,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_B;</code></summary> <details><summary><code lang=C>🄴 extern const char* const vs_0_2_fullscreen_quad_B;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8761,8 +8761,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_B_flipped;</code></summary> <details><summary><code lang=C>🄴 extern const char* const vs_0_2_fullscreen_quad_B_flipped;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8770,8 +8770,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const vs_323444143_16_332_model;</code></summary> <details><summary><code lang=C>🄴 extern const char* const vs_323444143_16_332_model;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8779,8 +8779,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const vs_324_24_sprite;</code></summary> <details><summary><code lang=C>🄴 extern const char* const vs_324_24_sprite;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8788,8 +8788,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const vs_332_32;</code></summary> <details><summary><code lang=C>🄴 extern const char* const vs_332_32;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8797,8 +8797,8 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name="rs.h""></a>
<details><summary><code lang=C> extern const char* const vs_3_3_skybox;</code></summary> <details><summary><code lang=C>🄴 extern const char* const vs_3_3_skybox;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.