From 600d0f3c81de7d7d267e5674ad55d2f955b4bba2 Mon Sep 17 00:00:00 2001 From: Nathan Date: Thu, 17 Apr 2025 21:59:14 -0500 Subject: [PATCH] add some server commands --- modules/ServerModule/src/ServerModule.cpp | 1 + modules/ServerModule/src/ServerModule.h | 13 +++++++++++++ modules/examples/ChatClient/src/ChatClient.cpp | 2 +- modules/examples/ChatServer/src/ChatServer.cpp | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/modules/ServerModule/src/ServerModule.cpp b/modules/ServerModule/src/ServerModule.cpp index b01e86c..ea07734 100644 --- a/modules/ServerModule/src/ServerModule.cpp +++ b/modules/ServerModule/src/ServerModule.cpp @@ -55,6 +55,7 @@ void ServerModule::startServer(int p) { } void ServerModule::stopServer() { + disconnectAllClients(); running = false; } diff --git a/modules/ServerModule/src/ServerModule.h b/modules/ServerModule/src/ServerModule.h index ab8e208..bf844e8 100644 --- a/modules/ServerModule/src/ServerModule.h +++ b/modules/ServerModule/src/ServerModule.h @@ -39,6 +39,19 @@ class ServerModule : public Archimedes::Module { } + void disconnectClient(HSteamNetConnection c) { + if(clients.find(c) != clients.end()) { + interface->CloseConnection(c, 0, nullptr, false); + clients.erase(c); + } + } + + void disconnectAllClients() { + while(!clients.empty()) { + disconnectClient(clients.begin()->first); + } + } + std::map getClients() const { return clients; } void pollIncomingData(); diff --git a/modules/examples/ChatClient/src/ChatClient.cpp b/modules/examples/ChatClient/src/ChatClient.cpp index de911f6..967ba2b 100644 --- a/modules/examples/ChatClient/src/ChatClient.cpp +++ b/modules/examples/ChatClient/src/ChatClient.cpp @@ -24,7 +24,7 @@ void ChatClient::run() { static ClientModule* cm; { cm = (ClientModule*) moduleInstances[ClientModule()]; } if(open) { - static std::string s, addr; + static std::string s, addr = "127.0.0.1:9932"; ImGui::Begin("ChatClient Module", &open); diff --git a/modules/examples/ChatServer/src/ChatServer.cpp b/modules/examples/ChatServer/src/ChatServer.cpp index 8e6c04d..efcfdd6 100644 --- a/modules/examples/ChatServer/src/ChatServer.cpp +++ b/modules/examples/ChatServer/src/ChatServer.cpp @@ -26,6 +26,13 @@ bool ChatServer::onEvent(const Archimedes::Event& event) { static std::string s; s = std::string((const char*)e.msg->m_pData, e.msg->m_cbSize); + if(s == "/quit") { + sm->disconnectClient(e.msg->m_conn); + } else if(s == "/shutdown") { + sm->stopServer(); + app->end(); + } + std::cerr << "Server Recieved: " << s << std::endl; for(auto& it : sm->getClients()) {