From d70f0e06380f4fefcc4dbaf821342e2ce5f496f7 Mon Sep 17 00:00:00 2001 From: Ezekiel Warren Date: Thu, 29 Aug 2024 14:17:42 -0700 Subject: [PATCH 1/3] feat: new async status api --- ecsact/runtime/async.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/ecsact/runtime/async.h b/ecsact/runtime/async.h index 0df0fdf2..f3228559 100644 --- a/ecsact/runtime/async.h +++ b/ecsact/runtime/async.h @@ -70,6 +70,23 @@ typedef enum { ECSACT_ASYNC_ERR_CUSTOM_END = 200, } ecsact_async_error; +typedef enum { + /** + * No status. Not connected. + */ + ECSACT_ASYNC_STATUS_NONE = 0, + + /** + * Connected. No issues. + */ + ECSACT_ASYNC_STATUS_CONNECTED = 1, + + /** + * Connection in progress. + */ + ECSACT_ASYNC_STATUS_PENDING = 1, +} ecsact_async_status; + /** * When an error occurs due to an async request this callback is invoked. * @@ -109,6 +126,14 @@ typedef void (*ecsact_async_request_done_callback)( // void* callback_user_data ); +/** + * Callback for a status change event + */ +typedef void (*ecsact_async_status_change_callback)( // + ecsact_async_status new_status, + void* callback_user_data +); + typedef struct ecsact_async_events_collector { /** * invoked when an async request failed. @@ -145,6 +170,16 @@ typedef struct ecsact_async_events_collector { * `callback_user_data` passed to `async_request_done_callback` */ void* async_request_done_callback_user_data; + + /** + * invoked when the async status has changed + */ + ecsact_async_status_change_callback async_status_change_callback; + + /** + * `callback_user_data` passed to `ecsact_async_status_change_callback` + */ + void* async_status_change_callback_user_data; } ecsact_async_events_collector; /** @@ -194,6 +229,11 @@ ECSACT_ASYNC_API_FN(ecsact_async_request_id, ecsact_async_connect) */ ECSACT_ASYNC_API_FN(void, ecsact_async_disconnect)(void); +/** + * Get the current async status. + */ +ECSACT_ASYNC_API_FN(void, ecsact_async_get_status)(void); + /** * Gets the current tick */ From 7d80e1b932e4172027b90c3d612e18d4bda5b628 Mon Sep 17 00:00:00 2001 From: Ezekiel Warren Date: Thu, 29 Aug 2024 14:18:27 -0700 Subject: [PATCH 2/3] fix: add missing return --- ecsact/runtime/async.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecsact/runtime/async.h b/ecsact/runtime/async.h index f3228559..2be31614 100644 --- a/ecsact/runtime/async.h +++ b/ecsact/runtime/async.h @@ -232,7 +232,7 @@ ECSACT_ASYNC_API_FN(void, ecsact_async_disconnect)(void); /** * Get the current async status. */ -ECSACT_ASYNC_API_FN(void, ecsact_async_get_status)(void); +ECSACT_ASYNC_API_FN(ecsact_async_status, ecsact_async_get_status)(void); /** * Gets the current tick From 9dcfb4bc18baf4cbaddc7124f02830a424945a64 Mon Sep 17 00:00:00 2001 From: Ezekiel Warren Date: Thu, 29 Aug 2024 14:24:54 -0700 Subject: [PATCH 3/3] fix: add missing in for each --- ecsact/runtime/async.h | 1 + 1 file changed, 1 insertion(+) diff --git a/ecsact/runtime/async.h b/ecsact/runtime/async.h index 2be31614..e4743b0a 100644 --- a/ecsact/runtime/async.h +++ b/ecsact/runtime/async.h @@ -244,6 +244,7 @@ ECSACT_ASYNC_API_FN(int32_t, ecsact_async_get_current_tick)(void); fn(ecsact_async_flush_events, __VA_ARGS__); \ fn(ecsact_async_connect, __VA_ARGS__); \ fn(ecsact_async_disconnect, __VA_ARGS__); \ + fn(ecsact_async_get_status, __VA_ARGS__); \ fn(ecsact_async_get_current_tick, __VA_ARGS__); #undef ECSACT_ASYNC_API