]> git.lizzy.rs Git - dragonnet-example.git/commitdiff
Use new dragonnet hook API
authorHimbeerserverDE <himbeerserverde@gmail.com>
Sat, 9 Oct 2021 15:15:45 +0000 (17:15 +0200)
committerHimbeerserverDE <himbeerserverde@gmail.com>
Sat, 9 Oct 2021 15:15:45 +0000 (17:15 +0200)
CMakeLists.txt
cs_example.c
deps/dragonnet

index 5cb6cad4fc3168467ea08cb2cc1c8375fc270805..1593b5981e7f1617781b14499ff7204ab47a9e1d 100644 (file)
@@ -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
 )
index 4e0175551150832eba9a33a364df0f348ac708a9..ff0ea8bc0a18f2378c24655e0ead8294bee6a910 100644 (file)
@@ -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;
 }
index ad5342417e9c6e5930932afc9cfd71c88220501c..a5143708dcc4e88a6d1b8c3ca946b97c72ba970d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit ad5342417e9c6e5930932afc9cfd71c88220501c
+Subproject commit a5143708dcc4e88a6d1b8c3ca946b97c72ba970d