forked from byterazor/EventManager
ADD: check for timeout when waiting for event
This commit is contained in:
parent
789ce929a4
commit
e7b1eeeaa1
@ -102,8 +102,11 @@
|
||||
|
||||
/**
|
||||
* @brief wait for a new event with timeout
|
||||
*
|
||||
* @return true - new event available and queue locked
|
||||
* @return false - no new event, queue not locked, timeout reached
|
||||
*/
|
||||
void _waitForEvent(std::uint32_t timeoutMS);
|
||||
bool _waitForEvent(std::uint32_t timeoutMS);
|
||||
|
||||
/**
|
||||
* @brief This method subscribes the participant to an event type
|
||||
|
@ -94,11 +94,17 @@ void EventManager::Participant::_waitForEvent()
|
||||
isQueueLocked_=true;
|
||||
}
|
||||
|
||||
void EventManager::Participant::_waitForEvent(std::uint32_t timeoutMS)
|
||||
bool EventManager::Participant::_waitForEvent(std::uint32_t timeoutMS)
|
||||
{
|
||||
std::unique_lock<std::mutex> lock(mutexEventQueue_);
|
||||
newEventInQueue_.wait_for(lock,timeoutMS*1ms);
|
||||
isQueueLocked_=true;
|
||||
if (newEventInQueue_.wait_for(lock,timeoutMS*1ms)==std::cv_status::no_timeout)
|
||||
{
|
||||
isQueueLocked_=true;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user