]>
Commit | Line | Data |
---|---|---|
6b51b9b1 CR |
1 | // Copyright (c) 2015 The Bitcoin Core developers |
2 | // Distributed under the MIT software license, see the accompanying | |
3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | |
4 | ||
5 | #ifndef BITCOIN_REVERSELOCK_H | |
6 | #define BITCOIN_REVERSELOCK_H | |
7 | ||
8 | /** | |
9 | * An RAII-style reverse lock. Unlocks on construction and locks on destruction. | |
10 | */ | |
11 | template<typename Lock> | |
12 | class reverse_lock | |
13 | { | |
14 | public: | |
15 | ||
16 | explicit reverse_lock(Lock& lock) : lock(lock) { | |
17 | lock.unlock(); | |
18 | } | |
19 | ||
20 | ~reverse_lock() { | |
21 | lock.lock(); | |
22 | } | |
23 | ||
24 | private: | |
25 | reverse_lock(reverse_lock const&); | |
26 | reverse_lock& operator=(reverse_lock const&); | |
27 | ||
28 | Lock& lock; | |
29 | }; | |
30 | ||
31 | #endif // BITCOIN_REVERSELOCK_H |