diff options
author | Determinant <ted.sybil@gmail.com> | 2019-06-28 17:10:36 -0400 |
---|---|---|
committer | Determinant <ted.sybil@gmail.com> | 2019-06-28 17:10:36 -0400 |
commit | fedfeaced48150e27907628244e95ca54dbe7c02 (patch) | |
tree | 40643888f7f1fe4ddfe75f777c7dddd5c276feb9 /include/salticidae/event.h | |
parent | 06b5a84602dc6a5dd76d82c9f88359cdb8cf52da (diff) |
more api
Diffstat (limited to 'include/salticidae/event.h')
-rw-r--r-- | include/salticidae/event.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/include/salticidae/event.h b/include/salticidae/event.h index a7ea209..9b8bea1 100644 --- a/include/salticidae/event.h +++ b/include/salticidae/event.h @@ -733,16 +733,21 @@ using threadcall_t = salticidae::ThreadCall; using threadcall_handle_t = salticidae::ThreadCall::Handle; using sigev_t = salticidae::SigEvent; using timerev_t = salticidae::TimerEvent; +using mpscqueue_t = salticidae::MPSCQueueEventDriven<void *>; #endif #else + +#include <stdbool.h> #include "config.h" + #ifdef SALTICIDAE_CBINDINGS typedef struct eventcontext_t eventcontext_t; typedef struct threadcall_t threadcall_t; typedef struct threadcall_handle_t threadcall_handle_t; typedef struct sigev_t sigev_t; typedef struct timerev_t timerev_t; +typedef struct mpscqueue_t mpscqueue_t; #endif #endif @@ -771,7 +776,7 @@ void sigev_del(sigev_t *self); void sigev_clear(sigev_t *self); const eventcontext_t *sigev_get_ec(const sigev_t *self); -typedef void (*timerev_callback_t)(timerev_t *, void *); +typedef void (*timerev_callback_t)(timerev_t *self, void *userdata); timerev_t *timerev_new(const eventcontext_t *ec, timerev_callback_t callback, void *); void timerev_set_callback(timerev_t *self, timerev_callback_t callback, void *); void timerev_free(timerev_t *self); @@ -780,6 +785,15 @@ void timerev_del(timerev_t *self); void timerev_clear(timerev_t *self); const eventcontext_t *timerev_get_ec(const timerev_t *self); +typedef bool (*mpscqueue_callback_t)(mpscqueue_t *self, void *userdata); +mpscqueue_t *mpscqueue_new(); +void mpscqueue_free(mpscqueue_t *self); +void mpscqueue_reg_handler(mpscqueue_t *self, const eventcontext_t *ec, mpscqueue_callback_t callback, void *); +void mpscqueue_unreg_handler(mpscqueue_t *self); +bool mpscqueue_enqueue(mpscqueue_t *self, void *elem, bool unbounded); +bool mpscqueue_try_dequeue(mpscqueue_t *self, void **elem); +void mpscqueue_set_capacity(mpscqueue_t *self, size_t cap); + #ifdef __cplusplus } #endif |