From fe23a646deb26625a93760944286a5491eee75c4 Mon Sep 17 00:00:00 2001 From: Drew Gilpin Date: Sun, 8 Jun 2025 22:45:44 -0400 Subject: [PATCH] Add nats.c library to server --- apps/server/CMakeLists.txt | 16 +++++++++++++++- apps/server/src/Main.cpp | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/apps/server/CMakeLists.txt b/apps/server/CMakeLists.txt index 6ce8889..18cc44c 100644 --- a/apps/server/CMakeLists.txt +++ b/apps/server/CMakeLists.txt @@ -4,6 +4,20 @@ add_executable(server ${PROJECT_SOURCE_DIR}/libs/game/src/stdafx.cpp ) +include(FetchContent) +FetchContent_Declare( + nats + GIT_REPOSITORY https://github.com/nats-io/nats.c.git + GIT_TAG v3.10.1 +) +set(NATS_BUILD_EXAMPLES OFF CACHE INTERNAL "") +set(NATS_BUILD_STREAMING OFF CACHE INTERNAL "") +set(NATS_BUILD_WITH_TLS OFF CACHE INTERNAL "") +set(NATS_BUILD_LIB_SHARED OFF CACHE INTERNAL "") +set(NATS_BUILD_LIB_STATIC ON CACHE INTERNAL "") +set(BUILD_TESTING OFF CACHE INTERNAL "") +FetchContent_MakeAvailable(nats) + if(MSVC) target_compile_definitions(server PRIVATE "$<$:_ITERATOR_DEBUG_LEVEL=0>" @@ -17,7 +31,7 @@ else() target_link_libraries(server PRIVATE -static-libstdc++ -no-pie) endif() -target_link_libraries(server PRIVATE GameCore GameLib) +target_link_libraries(server PRIVATE GameCore GameLib nats_static) # copy *.pak next to the binary file(COPY ${PROJECT_SOURCE_DIR}/assets/Project.pak diff --git a/apps/server/src/Main.cpp b/apps/server/src/Main.cpp index 2dc3f3e..549ef8f 100644 --- a/apps/server/src/Main.cpp +++ b/apps/server/src/Main.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "ConnectionsToClients.h" #include "stdafx.h" #include "@@headers.h" @@ -9,6 +10,7 @@ Vec2 dot_pos(0, 0); MyClass myObject("ExampleObject", 42); +static natsConnection *gNatsConn = nullptr; /******************************************************************************/ void InitPre() { @@ -31,6 +33,16 @@ bool Init() { LogN(S+"Init()"); SetupEnet(); + natsStatus s = natsConnection_ConnectTo(&gNatsConn, NATS_DEFAULT_URL); + if(s == NATS_OK) + { + natsConnection_PublishString(gNatsConn, "server.started", "Hello from server"); + natsConnection_FlushTimeout(gNatsConn, 1000); + } + else + { + LogN(S+"NATS connect failed: " + natsStatus_GetText(s)); + } return true; } /******************************************************************************/ @@ -38,6 +50,11 @@ void Shut() { LogN(S+"Shut()"); if(gServer) enet_host_destroy(gServer); + if(gNatsConn) + { + natsConnection_Destroy(gNatsConn); + nats_Close(); + } enet_deinitialize(); } /******************************************************************************/