mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 05:55:28 +00:00
[#1239] addressed comments
This commit is contained in:
43
src/lib/util/unlock_guard.h
Normal file
43
src/lib/util/unlock_guard.h
Normal file
@@ -0,0 +1,43 @@
|
||||
// Copyright (C) 2020 Internet Systems Consortium, Inc. ("ISC")
|
||||
//
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#ifndef UNLOCK_GUARD_H
|
||||
#define UNLOCK_GUARD_H
|
||||
|
||||
#include <boost/noncopyable.hpp>
|
||||
|
||||
namespace isc {
|
||||
namespace util {
|
||||
|
||||
/// @brief Unlock Guard.
|
||||
///
|
||||
/// Acts as a reverse std::lock_guard.
|
||||
template<typename Lock>
|
||||
class UnlockGuard : public boost::noncopyable {
|
||||
public:
|
||||
/// @brief Constructor.
|
||||
///
|
||||
/// Unlock mutex object on constructor.
|
||||
explicit UnlockGuard(Lock& lock) : lock_(lock) {
|
||||
lock_.unlock();
|
||||
}
|
||||
|
||||
/// @brief Destructor.
|
||||
///
|
||||
/// Lock mutex object on destructor.
|
||||
~UnlockGuard() {
|
||||
lock_.lock();
|
||||
}
|
||||
|
||||
private:
|
||||
/// @brief The mutex object.
|
||||
Lock& lock_;
|
||||
};
|
||||
|
||||
} // namespace util
|
||||
} // namespace isc
|
||||
|
||||
#endif // UNLOCK_GUARD_H
|
Reference in New Issue
Block a user