diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-02-25 18:35:00 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-02-25 18:35:00 -0500 |
| commit | b6a1b507acbac6d601f8a0ba9f3727dd2f8f86e6 (patch) | |
| tree | f6a0fd847f31b9252ea6e891e63b229a26deb0a8 /test | |
| parent | a752cef28a4eda5f56c6a611198134d388eaa00b (diff) | |
pkev: unregister callbacks
Diffstat (limited to 'test')
| -rw-r--r-- | test/pkev.c | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/test/pkev.c b/test/pkev.c index 10d82b0..f28739b 100644 --- a/test/pkev.c +++ b/test/pkev.c @@ -8,7 +8,8 @@ struct ev { pk_ev_mgr_id_T evmgr; pk_ev_id_T evid; - bool handled; + pk_ev_cb_id_T evcbid; + int handled_count; }; struct ev ev_one = {0}; @@ -17,13 +18,13 @@ struct ev ev_two = {0}; void handle_ev_one(void *, void *, void *) { - ev_one.handled = true; + ev_one.handled_count++; } void handle_ev_two(void *, void *, void *) { - ev_two.handled = true; + ev_two.handled_count++; } int @@ -68,13 +69,42 @@ int main(int argc, char *argv[]) const pk_ev_mgr_id_T evmgr = test_setup(); ev_one.evid = pk_ev_register_ev(evmgr, NULL); ev_two.evid = pk_ev_register_ev(evmgr, NULL); - pk_ev_register_cb(evmgr, ev_one.evid, handle_ev_one, NULL); - pk_ev_register_cb(evmgr, ev_two.evid, handle_ev_two, NULL); + ev_one.evcbid = pk_ev_register_cb(evmgr, ev_one.evid, handle_ev_one, NULL); + ev_two.evcbid = pk_ev_register_cb(evmgr, ev_two.evid, handle_ev_two, NULL); + pk_ev_emit(evmgr, ev_one.evid, NULL); + pk_ev_emit(evmgr, ev_two.evid, NULL); + PK_LOGV_INF("%s: ev_one: %i, ev_two: %i\n", __FILE__, ev_one.handled_count, ev_two.handled_count); + pk_ev_teardown(); + if (ev_one.handled_count != 1 || ev_two.handled_count != 1) exit(1); + } + + // register, emit, catch + { + const pk_ev_mgr_id_T evmgr = test_setup(); + ev_one.evid = pk_ev_register_ev(evmgr, NULL); + ev_two.evid = pk_ev_register_ev(evmgr, NULL); + ev_one.evcbid = pk_ev_register_cb(evmgr, ev_one.evid, handle_ev_one, NULL); + ev_two.evcbid = pk_ev_register_cb(evmgr, ev_two.evid, handle_ev_two, NULL); + pk_ev_emit(evmgr, ev_one.evid, NULL); + pk_ev_emit(evmgr, ev_two.evid, NULL); + PK_LOGV_INF("%s: ev_one: %i, ev_two: %i\n", __FILE__, ev_one.handled_count, ev_two.handled_count); + pk_ev_unregister_cb(evmgr, ev_one.evid, ev_one.evcbid); + pk_ev_unregister_cb(evmgr, ev_two.evid, ev_two.evcbid); pk_ev_emit(evmgr, ev_one.evid, NULL); pk_ev_emit(evmgr, ev_two.evid, NULL); - PK_LOGV_INF("%s: ev_one: %b, ev_two: %b\n", __FILE__, ev_one.handled, ev_two.handled); + uint64_t left, right; + left = pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].left_ev_cbs; + right = pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].right_ev_cbs; + PK_LOGV_INF("%s: left: %lu, right: %lu\n", __FILE__, left, right); + left = pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].left_ev_cbs; + right = pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].right_ev_cbs; + PK_LOGV_INF("%s: left: %lu, right: %lu\n", __FILE__, left, right); + if (pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].left_ev_cbs != 0) exit (1); + if (pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].right_ev_cbs != 1) exit (1); + if (pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].left_ev_cbs != 0) exit (1); + if (pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].right_ev_cbs != 1) exit (1); pk_ev_teardown(); - if (ev_one.handled == false || ev_two.handled == false) exit(1); + if (ev_one.handled_count != 1 || ev_two.handled_count != 1) exit(1); } // threaded register, emit, catch @@ -89,9 +119,9 @@ int main(int argc, char *argv[]) thrd_create(&t2, thrd_ev_emit_two, NULL); thrd_join(t1, &i); thrd_join(t2, &i); - PK_LOGV_INF("%s: ev_one: %b, ev_two: %b\n", __FILE__, ev_one.handled, ev_two.handled); + PK_LOGV_INF("%s: ev_one: %i, ev_two: %i\n", __FILE__, ev_one.handled_count, ev_two.handled_count); pk_ev_teardown(); - if (ev_one.handled == false || ev_two.handled == false) exit(1); + if (ev_one.handled_count != 1 || ev_two.handled_count != 1) exit(1); } return 0; |
