◆ InterProcessRefreshTokenLock() [1/2]
| Slic3r::anonymous_namespace{OrcaCloudServiceAgent.cpp}::InterProcessRefreshTokenLock::InterProcessRefreshTokenLock |
( |
const std::string & | path | ) |
|
|
inlineexplicit |
138 {
139 if (path.empty()) {
m_locked =
true;
return; }
140#if defined(_WIN32)
141 const std::wstring name =
L"Local\\OrcaTokenRefresh_" + std::to_wstring(std::hash<std::string>{}(path));
142 m_handle = ::CreateMutexW(nullptr, FALSE, name.c_str());
143 if (!m_handle) {
m_locked =
true;
return; }
144 const DWORD r = ::WaitForSingleObject(m_handle, INFINITE);
145 m_locked = (r == WAIT_OBJECT_0 || r == WAIT_ABANDONED);
146#else
147 m_fd = ::open(path.c_str(), O_RDWR | O_CREAT | O_CLOEXEC, 0600);
149 int rc;
150
151 do { rc = ::flock(
m_fd, LOCK_EX); }
while (rc == -1 && errno == EINTR);
153#endif
154 }
#define L(s)
Definition ExtrusionEntity.cpp:25
bool m_locked
Definition OrcaCloudServiceAgent.cpp:171
int m_fd
Definition OrcaCloudServiceAgent.cpp:175
References L, m_fd, and m_locked.
Referenced by InterProcessRefreshTokenLock(), and operator=().
◆ ~InterProcessRefreshTokenLock()
| Slic3r::anonymous_namespace{OrcaCloudServiceAgent.cpp}::InterProcessRefreshTokenLock::~InterProcessRefreshTokenLock |
( |
| ) |
|
|
inline |
157 {
158#if defined(_WIN32)
159 if (m_handle) {
if (
m_locked) ::ReleaseMutex(m_handle); ::CloseHandle(m_handle); }
160#else
162#endif
163 }
References m_fd, and m_locked.
◆ InterProcessRefreshTokenLock() [2/2]
| Slic3r::anonymous_namespace{OrcaCloudServiceAgent.cpp}::InterProcessRefreshTokenLock::InterProcessRefreshTokenLock |
( |
const InterProcessRefreshTokenLock & | | ) |
|
|
delete |
◆ locked()
| bool Slic3r::anonymous_namespace{OrcaCloudServiceAgent.cpp}::InterProcessRefreshTokenLock::locked |
( |
| ) |
const |
|
inline |
◆ operator=()
◆ m_fd
| int Slic3r::anonymous_namespace{OrcaCloudServiceAgent.cpp}::InterProcessRefreshTokenLock::m_fd = -1 |
|
private |
◆ m_locked
| bool Slic3r::anonymous_namespace{OrcaCloudServiceAgent.cpp}::InterProcessRefreshTokenLock::m_locked = false |
|
private |
The documentation for this class was generated from the following file: