summaryrefslogtreecommitdiffstats
path: root/lib/remote/configobjectslock.cpp
blob: e529c832b09bc34fd20264373e8c64abd4f41e8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* Icinga 2 | (c) 2022 Icinga GmbH | GPLv2+ */

#ifndef _WIN32

#include "base/shared-memory.hpp"
#include "remote/configobjectslock.hpp"
#include <boost/interprocess/sync/lock_options.hpp>

using namespace icinga;

// On *nix one process may write config objects while another is loading the config, so this uses IPC.
static SharedMemory<boost::interprocess::interprocess_sharable_mutex> l_ConfigObjectsMutex;

ConfigObjectsExclusiveLock::ConfigObjectsExclusiveLock()
	: m_Lock(l_ConfigObjectsMutex.Get())
{
}

ConfigObjectsSharedLock::ConfigObjectsSharedLock(std::try_to_lock_t)
	: m_Lock(l_ConfigObjectsMutex.Get(), boost::interprocess::try_to_lock)
{
}

#endif /* _WIN32 */