10Duke Enterprise C++ SDK
Toggle main menu visibility
Loading...
Searching...
No Matches
GuardWithTimeout.h
1
#ifndef TENDUKE_CONCURRENT_GUARDWITHTIMEOUT_H
2
#define TENDUKE_CONCURRENT_GUARDWITHTIMEOUT_H
3
4
#include <mutex>
5
#include <cstdint>
6
#include <chrono>
7
8
namespace
tenduke
{
namespace
concurrent
{
9
14
template
<
typename
TIMED_MUTEX>
15
class
GuardWithTimeout
16
{
17
public
:
23
GuardWithTimeout
(TIMED_MUTEX &mutex, std::chrono::milliseconds timeout)
24
: mutex(mutex), timedout(false)
25
{
26
if
(!mutex.try_lock_for(timeout)) {
27
timedout = true;
28
}
29
}
30
31
virtual
~GuardWithTimeout
()
32
{
33
if
(!timedout) {
34
mutex.unlock();
35
}
36
}
37
42
bool
hasTimedout
()
const
43
{
44
return
timedout;
45
}
46
47
private
:
48
TIMED_MUTEX &mutex;
49
bool
timedout;
50
};
51
55
typedef
GuardWithTimeout<std::recursive_timed_mutex>
RecursiveGuardWithTimeout
;
56
57
}}
58
59
#endif
//TENDUKE_CONCURRENT_GUARDWITHTIMEOUT_H
tenduke::concurrent::GuardWithTimeout
A mutex-guard with timeout functionality.
Definition
GuardWithTimeout.h:16
tenduke::concurrent::GuardWithTimeout::GuardWithTimeout
GuardWithTimeout(TIMED_MUTEX &mutex, std::chrono::milliseconds timeout)
Constructs new instance: Tries to lock the mutex.
Definition
GuardWithTimeout.h:23
tenduke::concurrent::GuardWithTimeout::hasTimedout
bool hasTimedout() const
Checks if the guard failed beaause of timeout.
Definition
GuardWithTimeout.h:42
tenduke::concurrent
Concurrency-related tools.
Definition
GuardWithTimeout.h:8
tenduke::concurrent::RecursiveGuardWithTimeout
GuardWithTimeout< std::recursive_timed_mutex > RecursiveGuardWithTimeout
Recursive implementation of GuardWithTimeout.
Definition
GuardWithTimeout.h:55
tenduke
Root for classes, functions and globals of 10Duke C++ Client.
Definition
APIRequest.h:4
core
core
src
concurrent
GuardWithTimeout.h
Generated by
1.17.0