From: HimbeerserverDE Date: Sat, 9 Oct 2021 15:15:45 +0000 (+0200) Subject: Use new dragonnet hook API X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=499476f1bc6cd641c0c60e8286d5a484543f3c18;p=dragonnet-example.git Use new dragonnet hook API --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cb6cad..1593b59 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,9 @@ set(SOURCES_COMMON "${DEPS_DIR}/dragontype/number.c" "${DEPS_DIR}/dragontype/queue.c" "${DEPS_DIR}/dragonport/asprintf.c" +) + +set(SOURCES_DRAGONNET "${DEPS_DIR}/dragonnet/addr.c" "${DEPS_DIR}/dragonnet/listen.c" "${DEPS_DIR}/dragonnet/peer.c" @@ -50,6 +53,7 @@ add_custom_target(ExampleTypes add_executable(ExampleCS ${SOURCES_COMMON} + ${SOURCES_DRAGONNET} dnet-types.c cs_example.c ) diff --git a/cs_example.c b/cs_example.c index 4e01755..ff0ea8b 100644 --- a/cs_example.c +++ b/cs_example.c @@ -15,41 +15,37 @@ static void connect_func(DragonnetPeer *p) free(str_addr); } -static void recv_type_func(DragonnetPeer *p, u16 type_id) +static void handle_pingpacket(DragonnetPeer *p, PingPacket *ping) { - char *str_addr = dragonnet_addr_str(p->raddr); - printf("type %d from %s\n", type_id, str_addr); - free(str_addr); + printf("PingPacket number: 0x%08x\n", ping->number); - if (type_id == DRAGONNET_TYPE_PINGPACKET) { - PingPacket ping = dragonnet_peer_recv_PingPacket(p); - printf("PingPacket number: 0x%08x\n", ping.number); + dragonnet_peer_send_PongPacket(p, &(PongPacket) { + .number = ping->number + }); - PongPacket pong = { - .number = ping.number - }; - dragonnet_peer_send_PongPacket(p, pong); + dragonnet_listener_close(l); + dragonnet_listener_delete(l); + l = NULL; - dragonnet_listener_close(l); - dragonnet_listener_delete(l); - l = NULL; + dragonnet_peer_close(p); + dragonnet_peer_delete(p); +} - dragonnet_peer_close(p); - dragonnet_peer_delete(p); - } else if (type_id == DRAGONNET_TYPE_PONGPACKET) { - PongPacket pong = dragonnet_peer_recv_PongPacket(p); - printf("PongPacket number: 0x%08x\n", pong.number); +static void handle_pongpacket(DragonnetPeer *p, PongPacket *pong) +{ + printf("PongPacket number: 0x%08x\n", pong->number); - dragonnet_peer_close(p); - dragonnet_peer_delete(p); - } + dragonnet_peer_close(p); + dragonnet_peer_delete(p); } static void *srv_func(__attribute((unused)) void *unused) { - l = dragonnet_listener_new("[::1]:50000", &connect_func, &recv_type_func); + l = dragonnet_listener_new("[::1]:50000", &connect_func); assert(l != NULL); + dragonnet_listener_set_recv_hook(l, DRAGONNET_TYPE_PINGPACKET, + (void (*)(DragonnetPeer *, void *)) &handle_pingpacket); dragonnet_listener_run(l); return NULL; } @@ -58,15 +54,16 @@ static void *clt_func(__attribute((unused)) void *unused) { while (l == NULL); - DragonnetPeer *p = dragonnet_connect("[::1]:50000", &recv_type_func); + DragonnetPeer *p = dragonnet_connect("[::1]:50000"); assert(p != NULL); + dragonnet_peer_set_recv_hook(p, DRAGONNET_TYPE_PONGPACKET, + (void (*)(DragonnetPeer *, void *)) &handle_pongpacket); dragonnet_peer_run(p); - PingPacket ping = { + dragonnet_peer_send_PingPacket(p, &(PingPacket) { .number = 0xdba - }; - dragonnet_peer_send_PingPacket(p, ping); + }); return NULL; } diff --git a/deps/dragonnet b/deps/dragonnet index ad53424..a514370 160000 --- a/deps/dragonnet +++ b/deps/dragonnet @@ -1 +1 @@ -Subproject commit ad5342417e9c6e5930932afc9cfd71c88220501c +Subproject commit a5143708dcc4e88a6d1b8c3ca946b97c72ba970d