From a728dc2c150b9d19149aa67ae6af6fdd934f336e Mon Sep 17 00:00:00 2001 From: Nathan Date: Thu, 17 Apr 2025 18:28:35 -0500 Subject: [PATCH] test --- modules/ClientModule/src/ClientEvents.h | 5 +++++ modules/ClientModule/src/ClientModule.cpp | 14 ++++++++------ modules/ClientModule/src/ClientModule.h | 2 ++ modules/ServerModule/src/ServerModule.cpp | 4 +++- modules/examples/ChatClient/src/ChatClient.cpp | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/ClientModule/src/ClientEvents.h b/modules/ClientModule/src/ClientEvents.h index 4bc5e55..5372339 100644 --- a/modules/ClientModule/src/ClientEvents.h +++ b/modules/ClientModule/src/ClientEvents.h @@ -14,6 +14,11 @@ namespace CMEvent { DataRecievedEvent(ISteamNetworkingMessage* m) : msg(m) {} + ~DataRecievedEvent() { + if(msg) + msg->Release(); + } + operator std::string() const { return "CMEvent::DataRecievedEvent"; } ISteamNetworkingMessage* msg; diff --git a/modules/ClientModule/src/ClientModule.cpp b/modules/ClientModule/src/ClientModule.cpp index b87c612..8679194 100644 --- a/modules/ClientModule/src/ClientModule.cpp +++ b/modules/ClientModule/src/ClientModule.cpp @@ -37,7 +37,7 @@ void ClientModule::startClient(SteamNetworkingIPAddr& serverAddr) { // Start connecting char szAddr[ SteamNetworkingIPAddr::k_cchMaxString ]; serverAddr.ToString( szAddr, sizeof(szAddr), true ); - //Printf( "Connecting to chat server at %s", szAddr ); + std::cerr << "Connecting to chat server at " << szAddr << std::endl; SteamNetworkingConfigValue_t opt; opt.SetPtr( k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, (void*)SteamNetConnectionStatusChangedCallback ); connection = interface->ConnectByIPAddress( serverAddr, 1, &opt ); @@ -125,17 +125,19 @@ bool ClientModule::onEvent(const Archimedes::Event& event) { void ClientModule::pollIncomingData() { - while ( running ) - { + int numMsgs; + do { ISteamNetworkingMessage *pIncomingMsg = nullptr; - int numMsgs = interface->ReceiveMessagesOnConnection( connection, &pIncomingMsg, 1 ); + numMsgs = interface->ReceiveMessagesOnConnection( connection, &pIncomingMsg, 1 ); if ( numMsgs == 0 ) - break; + return; if ( numMsgs < 0 ) std::cerr << "Error checking for messages" << std::endl; assert( numMsgs == 1 && pIncomingMsg ); assert( pIncomingMsg->m_conn == connection ); app->emitEvent(new CMEvent::DataRecievedEvent(pIncomingMsg)); - } + //numMsgs--; + return; + } while (numMsgs > 0); } diff --git a/modules/ClientModule/src/ClientModule.h b/modules/ClientModule/src/ClientModule.h index 249a241..50625a2 100644 --- a/modules/ClientModule/src/ClientModule.h +++ b/modules/ClientModule/src/ClientModule.h @@ -30,6 +30,8 @@ class ClientModule : public Archimedes::Module { bool isRunning() const { return running; } + bool isConnected() const { return connection != k_HSteamNetConnection_Invalid; } + void pollIncomingData(); void shouldHandleEvents(unsigned int events) { eventsToHandle = events; } diff --git a/modules/ServerModule/src/ServerModule.cpp b/modules/ServerModule/src/ServerModule.cpp index d716c09..3a119d5 100644 --- a/modules/ServerModule/src/ServerModule.cpp +++ b/modules/ServerModule/src/ServerModule.cpp @@ -166,6 +166,7 @@ bool ServerModule::onEvent(const Archimedes::Event& event) { //Printf( "Can't accept connection. (It was already closed?)" ); break; } + std::cerr << "Connection Accepted!\n"; // Assign the poll group if ( !interface->SetConnectionPollGroup( e.info->m_hConn, pollGroup ) ) @@ -208,7 +209,7 @@ void ServerModule::pollIncomingData() { ISteamNetworkingMessage *pIncomingMsg = nullptr; int numMsgs = interface->ReceiveMessagesOnPollGroup( pollGroup, &pIncomingMsg, 1 ); if ( numMsgs == 0 ) - break; + return; if ( numMsgs < 0 ) std::cerr << "Error checking for messages" << std::endl; assert( numMsgs == 1 && pIncomingMsg ); @@ -216,5 +217,6 @@ void ServerModule::pollIncomingData() { assert( itClient != clients.end() ); app->emitEvent(new SMEvent::DataRecievedEvent(pIncomingMsg)); + return; } } diff --git a/modules/examples/ChatClient/src/ChatClient.cpp b/modules/examples/ChatClient/src/ChatClient.cpp index e564521..557bb6c 100644 --- a/modules/examples/ChatClient/src/ChatClient.cpp +++ b/modules/examples/ChatClient/src/ChatClient.cpp @@ -30,7 +30,7 @@ void ChatClient::run() { ImGui::InputText("Server Address: ", &addr); - if(cm->isRunning()) { + if(cm->isRunning() && cm->isConnected()) { if(ImGui::Button("Disconnect") && cm->isRunning()) { cm->stopClient();