diff --git a/src/v2i-hub/PedestrianPlugin/src/FLIRWebSockAsyncClnSession.cpp b/src/v2i-hub/PedestrianPlugin/src/FLIRWebSockAsyncClnSession.cpp index eedb291ab..1ab432dfc 100644 --- a/src/v2i-hub/PedestrianPlugin/src/FLIRWebSockAsyncClnSession.cpp +++ b/src/v2i-hub/PedestrianPlugin/src/FLIRWebSockAsyncClnSession.cpp @@ -318,10 +318,19 @@ namespace PedestrianPlugin std::cout << beast::make_printable(buffer_.data()) << std::endl; } - std::queue& FLIRWebSockAsyncClnSession::getPSMQueue() + std::queue FLIRWebSockAsyncClnSession::getPSMQueue() { std::lock_guard lock(_psmLock); - return psmQueue; + + //pass copy of the queue to Pedestrian Plugin + std::queue queueToPass = psmQueue; + + //empty the queue internally + std::queue empty; + std::swap(psmQueue, empty); + + return queueToPass; + } vector FLIRWebSockAsyncClnSession::timeStringParser(string dateTimeStr) const @@ -368,7 +377,6 @@ namespace PedestrianPlugin parsedArr.push_back(std::stoi(milliseconds)); return parsedArr; - } - + } } \ No newline at end of file diff --git a/src/v2i-hub/PedestrianPlugin/src/PedestrianPlugin.cpp b/src/v2i-hub/PedestrianPlugin/src/PedestrianPlugin.cpp index 26efbf5a1..eb257c29b 100644 --- a/src/v2i-hub/PedestrianPlugin/src/PedestrianPlugin.cpp +++ b/src/v2i-hub/PedestrianPlugin/src/PedestrianPlugin.cpp @@ -134,13 +134,16 @@ int PedestrianPlugin::checkXML() else { //retrieve the PSM queue and send each one to be broadcast, then pop - std::queue ¤tPSMQueue = flirSession->getPSMQueue(); - - for (int i = 0; i < currentPSMQueue.size(); i++) - { - BroadcastPsm(const_cast(currentPSMQueue.front().c_str())); - currentPSMQueue.pop(); - } + std::queue currentPSMQueue = flirSession->getPSMQueue(); + + if (currentPSMQueue.size() > 0) + { + for (int i = 0; i < currentPSMQueue.size(); i++) + { + BroadcastPsm(const_cast(currentPSMQueue.front().c_str())); + currentPSMQueue.pop(); + } + } } } diff --git a/src/v2i-hub/PedestrianPlugin/src/include/FLIRWebSockAsyncClnSession.hpp b/src/v2i-hub/PedestrianPlugin/src/include/FLIRWebSockAsyncClnSession.hpp index 63c795a2e..41448e3af 100644 --- a/src/v2i-hub/PedestrianPlugin/src/include/FLIRWebSockAsyncClnSession.hpp +++ b/src/v2i-hub/PedestrianPlugin/src/include/FLIRWebSockAsyncClnSession.hpp @@ -132,11 +132,12 @@ namespace PedestrianPlugin on_close(beast::error_code ec); /** - * @brief Get method for queue containing psm for all tracked pedestrians + * @brief Get method for queue containing psm for all tracked pedestrians. Copies the queue into + * a temporary queue and returns temporary queue. Clears the original queue. * * @return std::queue the psm queue */ - std::queue &getPSMQueue(); + std::queue getPSMQueue(); /** * @brief Parses the datetime string that the camera returns into a vector containing each component @@ -145,6 +146,7 @@ namespace PedestrianPlugin * @return: vector with all components */ std::vector timeStringParser(std::string dateTimeStr) const; - }; + }; + };