]> git.lizzy.rs Git - dragonnet-example.git/commitdiff
Use demo packets for ping-pong communication
authorHimbeerserverDE <himbeerserverde@gmail.com>
Fri, 8 Oct 2021 18:09:53 +0000 (20:09 +0200)
committerHimbeerserverDE <himbeerserverde@gmail.com>
Fri, 8 Oct 2021 18:09:53 +0000 (20:09 +0200)
CMakeLists.txt
cs_example.c
deps/dragonnet

index 897906e3858a962239d4df70320d381cce30d4ff..5cb6cad4fc3168467ea08cb2cc1c8375fc270805 100644 (file)
@@ -50,6 +50,7 @@ add_custom_target(ExampleTypes
 
 add_executable(ExampleCS
        ${SOURCES_COMMON}
+       dnet-types.c
        cs_example.c
 )
 
index d3c588806d5179ed7ca73a3344a1fc1a5362aa15..4e0175551150832eba9a33a364df0f348ac708a9 100644 (file)
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 
 #include "deps/dragonnet/listen.h"
+#include "dnet-types.h"
 
 static DragonnetListener *l;
 
@@ -12,15 +13,41 @@ static void connect_func(DragonnetPeer *p)
        char *str_addr = dragonnet_addr_str(p->raddr);
        printf("new connection from %s\n", str_addr);
        free(str_addr);
+}
+
+static void recv_type_func(DragonnetPeer *p, u16 type_id)
+{
+       char *str_addr = dragonnet_addr_str(p->raddr);
+       printf("type %d from %s\n", type_id, str_addr);
+       free(str_addr);
+
+       if (type_id == DRAGONNET_TYPE_PINGPACKET) {
+               PingPacket ping = dragonnet_peer_recv_PingPacket(p);
+               printf("PingPacket number: 0x%08x\n", 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);
+       } else if (type_id == DRAGONNET_TYPE_PONGPACKET) {
+               PongPacket pong = dragonnet_peer_recv_PongPacket(p);
+               printf("PongPacket number: 0x%08x\n", pong.number);
+
+               dragonnet_peer_close(p);
+               dragonnet_peer_delete(p);
+       }
 }
 
 static void *srv_func(__attribute((unused)) void *unused)
 {
-       l = dragonnet_listener_new("[::1]:50000", &connect_func);
+       l = dragonnet_listener_new("[::1]:50000", &connect_func, &recv_type_func);
        assert(l != NULL);
 
        dragonnet_listener_run(l);
@@ -29,12 +56,18 @@ static void *srv_func(__attribute((unused)) void *unused)
 
 static void *clt_func(__attribute((unused)) void *unused)
 {
-       DragonnetPeer *p = dragonnet_connect("[::1]:50000");
+       while (l == NULL);
+
+       DragonnetPeer *p = dragonnet_connect("[::1]:50000", &recv_type_func);
        assert(p != NULL);
 
        dragonnet_peer_run(p);
-       dragonnet_peer_close(p);
-       dragonnet_peer_delete(p);
+
+       PingPacket ping = {
+               .number = 0xdba
+       };
+       dragonnet_peer_send_PingPacket(p, ping);
+
        return NULL;
 }
 
@@ -46,4 +79,6 @@ int main(__attribute((unused)) int argc, __attribute((unused)) char **argv)
 
        pthread_join(clt_thread, NULL);
        pthread_join(srv_thread, NULL);
+
+       while (true);
 }
index d69acbe4b3d830a011b240c74467f6f44d4e961d..ad5342417e9c6e5930932afc9cfd71c88220501c 160000 (submodule)
@@ -1 +1 @@
-Subproject commit d69acbe4b3d830a011b240c74467f6f44d4e961d
+Subproject commit ad5342417e9c6e5930932afc9cfd71c88220501c