From 299d1a3cf7f7ab2465dccc87dde578044c9b040b Mon Sep 17 00:00:00 2001 From: Determinant Date: Mon, 10 Jun 2019 21:32:45 -0400 Subject: ... --- include/salticidae/event.h | 6 +++--- include/salticidae/netaddr.h | 2 ++ include/salticidae/network.h | 1 + src/event.cpp | 12 ++++++------ src/netaddr.cpp | 4 ++++ src/network.cpp | 4 ++++ 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/include/salticidae/event.h b/include/salticidae/event.h index c82d54f..c54b69d 100644 --- a/include/salticidae/event.h +++ b/include/salticidae/event.h @@ -686,9 +686,9 @@ sigev_t *sigev_new(const eventcontext_t *ec, sigev_callback_t cb); void sigev_free(sigev_t *self); void sigev_add(sigev_t *self, int sig); -typedef void (*timerev_callback_t)(timerev_t *); -timerev_t *timerev_new(const eventcontext_t *ec, timerev_callback_t callback); -void timerev_set_callback(timerev_t *self, timerev_callback_t callback); +typedef void (*timerev_callback_t)(timerev_t *, void *); +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); void timerev_add(timerev_t *self, double t_sec); void timerev_del(timerev_t *self); diff --git a/include/salticidae/netaddr.h b/include/salticidae/netaddr.h index 4edf926..01510e0 100644 --- a/include/salticidae/netaddr.h +++ b/include/salticidae/netaddr.h @@ -141,6 +141,8 @@ netaddr_t *netaddr_new_from_sip_port(const char *ip, uint16_t port); netaddr_t *netaddr_new_from_sipport(const char *ip_port_addr); bool netaddr_is_eq(const netaddr_t *a, const netaddr_t *b); bool netaddr_is_null(const netaddr_t *self); +uint32_t netaddr_get_ip(const netaddr_t *self); +uint16_t netaddr_get_port(const netaddr_t *self); #ifdef __cplusplus } diff --git a/include/salticidae/network.h b/include/salticidae/network.h index 3b53f26..32d638a 100644 --- a/include/salticidae/network.h +++ b/include/salticidae/network.h @@ -841,6 +841,7 @@ bool msgnetwork_send_msg(msgnetwork_t *self, const msg_t *msg, const msgnetwork_ msgnetwork_conn_t *msgnetwork_connect(msgnetwork_t *self, const netaddr_t *addr); void msgnetwork_listen(msgnetwork_t *self, const netaddr_t *listen_addr); void msgnetwork_start(msgnetwork_t *self); +void msgnetwork_terminate(msgnetwork_t *self, const msgnetwork_conn_t *conn); typedef void (*msgnetwork_msg_callback_t)(const msg_t *, const msgnetwork_conn_t *, void *userdata); void msgnetwork_reg_handler(msgnetwork_t *self, _opcode_t opcode, msgnetwork_msg_callback_t cb, void *userdata); diff --git a/src/event.cpp b/src/event.cpp index 2e38e5f..9b6f432 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -34,15 +34,15 @@ void sigev_free(sigev_t *self) { delete self; } void sigev_add(sigev_t *self, int sig) { self->add(sig); } -timerev_t *timerev_new(const eventcontext_t *ec, timerev_callback_t callback) { - return new timerev_t(*ec, [callback](salticidae::TimerEvent &ev) { - callback(&ev); +timerev_t *timerev_new(const eventcontext_t *ec, timerev_callback_t callback, void *userdata) { + return new timerev_t(*ec, [=](salticidae::TimerEvent &ev) { + callback(&ev, userdata); }); } -void timerev_set_callback(timerev_t *self, timerev_callback_t callback) { - self->set_callback([callback](salticidae::TimerEvent &ev) { - callback(&ev); +void timerev_set_callback(timerev_t *self, timerev_callback_t callback, void *userdata) { + self->set_callback([=](salticidae::TimerEvent &ev) { + callback(&ev, userdata); }); } diff --git a/src/netaddr.cpp b/src/netaddr.cpp index 3c2618a..109a6ac 100644 --- a/src/netaddr.cpp +++ b/src/netaddr.cpp @@ -26,6 +26,10 @@ bool netaddr_is_eq(const netaddr_t *a, const netaddr_t *b) { bool netaddr_is_null(const netaddr_t *self) { return self->is_null(); } +uint32_t netaddr_get_ip(const netaddr_t *self) { return self->ip; } + +uint16_t netaddr_get_port(const netaddr_t *self) { return self->port; } + } #endif diff --git a/src/network.cpp b/src/network.cpp index c14531c..673cc24 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -54,6 +54,10 @@ void msgnetwork_reg_conn_handler(msgnetwork_t *self, void msgnetwork_start(msgnetwork_t *self) { self->start(); } +void msgnetwork_terminate(msgnetwork_t *self, const msgnetwork_conn_t *conn) { + self->terminate(*conn); +} + msgnetwork_t *msgnetwork_conn_get_net(const msgnetwork_conn_t *conn) { return (*conn)->get_net(); } -- cgit v1.2.3