diff --git a/libmxclient/callback.go b/libmxclient/callback.go new file mode 100644 index 0000000..fd6bfd3 --- /dev/null +++ b/libmxclient/callback.go @@ -0,0 +1,31 @@ +// Copyright (C) 2026 saces@c-base.org +// SPDX-License-Identifier: AGPL-3.0-only +package main + +/* +#include +typedef void (*on_event_handler_ptr) (char*); +typedef void (*on_message_handler_ptr) (char*); + +static inline void call_c_on_event_handler(on_event_handler_ptr ptr, char* jsonStr) { + (ptr)(jsonStr); +} + +static inline void call_c_on_message_handler(on_message_handler_ptr ptr, char* jsonStr) { + (ptr)(jsonStr); +} +*/ +import "C" + +var on_event_handler C.on_event_handler_ptr +var on_message_handler C.on_message_handler_ptr + +//export register_on_event_handler +func register_on_event_handler(fn C.on_event_handler_ptr) { + on_event_handler = fn +} + +//export register_on_message_handler +func register_on_message_handler(fn C.on_message_handler_ptr) { + on_message_handler = fn +} diff --git a/pygomx/build_ffi.py b/pygomx/build_ffi.py index 64feb06..0893b6e 100644 --- a/pygomx/build_ffi.py +++ b/pygomx/build_ffi.py @@ -13,6 +13,10 @@ ffibuilder.set_source( ffibuilder.cdef( csource=""" + typedef void (*on_event_handler_ptr) (char*); + typedef void (*on_message_handler_ptr) (char*); + extern void register_on_event_handler(on_event_handler_ptr ptr); + extern void register_on_message_handler(on_message_handler_ptr ptr); extern void FreeCString(char * s); extern char* cli_discoverhs(char* mxid); extern char* cli_mkmxtoken(char* mxid, char* pw);