diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
commit | 2d37894b1b037cf24231090eda8589bbb44fb6fc (patch) | |
tree | be835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/poco/Foundation/include/Poco/RWLock_POSIX.h | |
parent | 718c552901d703c502ccbefdfc3c9028d608b947 (diff) | |
download | ydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/RWLock_POSIX.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/RWLock_POSIX.h | 198 |
1 files changed, 99 insertions, 99 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/RWLock_POSIX.h b/contrib/libs/poco/Foundation/include/Poco/RWLock_POSIX.h index a6475b781c..be4d11beb4 100644 --- a/contrib/libs/poco/Foundation/include/Poco/RWLock_POSIX.h +++ b/contrib/libs/poco/Foundation/include/Poco/RWLock_POSIX.h @@ -1,99 +1,99 @@ -// -// RWLock_POSIX.h -// -// Library: Foundation -// Package: Threading -// Module: RWLock -// -// Definition of the RWLockImpl class for POSIX Threads. -// -// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_RWLock_POSIX_INCLUDED -#define Foundation_RWLock_POSIX_INCLUDED - - -#include "Poco/Foundation.h" -#include "Poco/Exception.h" -#include <pthread.h> -#include <errno.h> - - -namespace Poco { - - -class Foundation_API RWLockImpl -{ -protected: - RWLockImpl(); - ~RWLockImpl(); - void readLockImpl(); - bool tryReadLockImpl(); - void writeLockImpl(); - bool tryWriteLockImpl(); - void unlockImpl(); - -private: - pthread_rwlock_t _rwl; -}; - - -// -// inlines -// -inline void RWLockImpl::readLockImpl() -{ - if (pthread_rwlock_rdlock(&_rwl)) - throw SystemException("cannot lock reader/writer lock"); -} - - -inline bool RWLockImpl::tryReadLockImpl() -{ - int rc = pthread_rwlock_tryrdlock(&_rwl); - if (rc == 0) - return true; - else if (rc == EBUSY) - return false; - else - throw SystemException("cannot lock reader/writer lock"); - -} - - -inline void RWLockImpl::writeLockImpl() -{ - if (pthread_rwlock_wrlock(&_rwl)) - throw SystemException("cannot lock reader/writer lock"); -} - - -inline bool RWLockImpl::tryWriteLockImpl() -{ - int rc = pthread_rwlock_trywrlock(&_rwl); - if (rc == 0) - return true; - else if (rc == EBUSY) - return false; - else - throw SystemException("cannot lock reader/writer lock"); - -} - - -inline void RWLockImpl::unlockImpl() -{ - if (pthread_rwlock_unlock(&_rwl)) - throw SystemException("cannot unlock mutex"); -} - - -} // namespace Poco - - -#endif // Foundation_RWLock_POSIX_INCLUDED +// +// RWLock_POSIX.h +// +// Library: Foundation +// Package: Threading +// Module: RWLock +// +// Definition of the RWLockImpl class for POSIX Threads. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_RWLock_POSIX_INCLUDED +#define Foundation_RWLock_POSIX_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include <pthread.h> +#include <errno.h> + + +namespace Poco { + + +class Foundation_API RWLockImpl +{ +protected: + RWLockImpl(); + ~RWLockImpl(); + void readLockImpl(); + bool tryReadLockImpl(); + void writeLockImpl(); + bool tryWriteLockImpl(); + void unlockImpl(); + +private: + pthread_rwlock_t _rwl; +}; + + +// +// inlines +// +inline void RWLockImpl::readLockImpl() +{ + if (pthread_rwlock_rdlock(&_rwl)) + throw SystemException("cannot lock reader/writer lock"); +} + + +inline bool RWLockImpl::tryReadLockImpl() +{ + int rc = pthread_rwlock_tryrdlock(&_rwl); + if (rc == 0) + return true; + else if (rc == EBUSY) + return false; + else + throw SystemException("cannot lock reader/writer lock"); + +} + + +inline void RWLockImpl::writeLockImpl() +{ + if (pthread_rwlock_wrlock(&_rwl)) + throw SystemException("cannot lock reader/writer lock"); +} + + +inline bool RWLockImpl::tryWriteLockImpl() +{ + int rc = pthread_rwlock_trywrlock(&_rwl); + if (rc == 0) + return true; + else if (rc == EBUSY) + return false; + else + throw SystemException("cannot lock reader/writer lock"); + +} + + +inline void RWLockImpl::unlockImpl() +{ + if (pthread_rwlock_unlock(&_rwl)) + throw SystemException("cannot unlock mutex"); +} + + +} // namespace Poco + + +#endif // Foundation_RWLock_POSIX_INCLUDED |