diff options
Diffstat (limited to 'cethcan/osc.c')
-rw-r--r-- | cethcan/osc.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cethcan/osc.c b/cethcan/osc.c new file mode 100644 index 0000000..cd957f0 --- /dev/null +++ b/cethcan/osc.c @@ -0,0 +1,29 @@ +#include "cethcan.h" + +struct osc_server *osc_server = NULL; +static struct event *osc_server_event = NULL; + +static void osc_sock_handler(int sock, short event, void *arg) +{ + if (osc_server_run(osc_server)) { + event_del(osc_server_event); + osc_server_event = NULL; + } +} + +void osc_init(void) +{ + if (osc_server) + return; + + osc_server = osc_server_new(NULL, "4223", NULL); + if (!osc_server) + return; + + if (osc_server_set_blocking(osc_server, false)) + return; + + osc_server_event = event_new(ev_base, osc_server_fd(osc_server), + EV_READ | EV_PERSIST, osc_sock_handler, NULL); + event_add(osc_server_event, NULL); +} |