From 25e6084b662568ac9c2aafc3d6262c6f6c6ab876 Mon Sep 17 00:00:00 2001 From: Noor Azura Ahmad Tarmizi Date: Fri, 17 May 2024 01:59:32 -0400 Subject: [PATCH] clientStateMap: keeping a map of clientStateMap FYI, this might not be needed. Signed-off-by: Noor Azura Ahmad Tarmizi --- jclklib/client/init.cpp | 12 ++++++++++++ jclklib/client/init.hpp | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/jclklib/client/init.cpp b/jclklib/client/init.cpp index 14b60214..9bce2239 100644 --- a/jclklib/client/init.cpp +++ b/jclklib/client/init.cpp @@ -86,6 +86,10 @@ bool JClkLibClientApi::jcl_connect() appClientState.set_clientID(newClientID); + /* Add in the map */ + clientStateMap.insert(std::pair\ + (appClientState.get_sessionId(),&appClientState)); + return true; } @@ -158,6 +162,7 @@ bool JClkLibClientApi::jcl_subscribe(JClkLibCommon::jcl_subscription &newSub, bool JClkLibClientApi::jcl_disconnect() { + std::map ::iterator it; bool retVal = false; // Send a disconnect message @@ -175,6 +180,13 @@ bool JClkLibClientApi::jcl_disconnect() /* delete the ClientState reference inside ClientNotificationMessage class */ ClientNotificationMessage::deleteClientState(&appClientState); + it = clientStateMap.find(appClientState.get_sessionId()); + + if (it != clientStateMap.end()) { + delete it->second; + clientStateMap.erase(it); + } + retVal = true; done: diff --git a/jclklib/client/init.hpp b/jclklib/client/init.hpp index bc94adbb..37d6db3b 100644 --- a/jclklib/client/init.hpp +++ b/jclklib/client/init.hpp @@ -25,7 +25,7 @@ namespace JClkLibClient { class JClkLibClientApi { private : //std::map ports; - static std::map clientStateMap; + inline static std::map clientStateMap; ClientState appClientState; public : JClkLibClientApi() {