From 499476f1bc6cd641c0c60e8286d5a484543f3c18 Mon Sep 17 00:00:00 2001 From: HimbeerserverDE Date: Sat, 9 Oct 2021 17:15:45 +0200 Subject: [PATCH] Use new dragonnet hook API --- CMakeLists.txt | 4 ++++ cs_example.c | 51 ++++++++++++++++++++++++-------------------------- deps/dragonnet | 2 +- 3 files changed, 29 insertions(+), 28 deletions(-) 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 -- 2.44.0