diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/include/Poco/RWLock_VX.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/RWLock_VX.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/RWLock_VX.h | 184 |
1 files changed, 92 insertions, 92 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/RWLock_VX.h b/contrib/libs/poco/Foundation/include/Poco/RWLock_VX.h index bdc4af2fe2..01c3caf6bd 100644 --- a/contrib/libs/poco/Foundation/include/Poco/RWLock_VX.h +++ b/contrib/libs/poco/Foundation/include/Poco/RWLock_VX.h @@ -1,92 +1,92 @@ -// -// RWLock_VX.h -// -// Library: Foundation -// Package: Threading -// Module: RWLock -// -// Definition of the RWLockImpl class for POSIX Threads (VxWorks). -// -// Copyright (c) 2004-2011, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_RWLock_VX_INCLUDED -#define Foundation_RWLock_VX_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_mutex_t _mutex; -}; - - -// -// inlines -// -inline void RWLockImpl::readLockImpl() -{ - if (pthread_mutex_lock(&_mutex)) - throw SystemException("cannot lock mutex"); -} - - -inline bool RWLockImpl::tryReadLockImpl() -{ - int rc = pthread_mutex_trylock(&_mutex); - if (rc == 0) - return true; - else if (rc == EBUSY) - return false; - else - throw SystemException("cannot lock mutex"); - -} - - -inline void RWLockImpl::writeLockImpl() -{ - readLockImpl(); -} - - -inline bool RWLockImpl::tryWriteLockImpl() -{ - return tryReadLockImpl(); - -} - - -inline void RWLockImpl::unlockImpl() -{ - if (pthread_mutex_unlock(&_mutex)) - throw SystemException("cannot unlock mutex"); -} - - -} // namespace Poco - - -#endif // Foundation_RWLock_VX_INCLUDED +// +// RWLock_VX.h +// +// Library: Foundation +// Package: Threading +// Module: RWLock +// +// Definition of the RWLockImpl class for POSIX Threads (VxWorks). +// +// Copyright (c) 2004-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_RWLock_VX_INCLUDED +#define Foundation_RWLock_VX_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_mutex_t _mutex; +}; + + +// +// inlines +// +inline void RWLockImpl::readLockImpl() +{ + if (pthread_mutex_lock(&_mutex)) + throw SystemException("cannot lock mutex"); +} + + +inline bool RWLockImpl::tryReadLockImpl() +{ + int rc = pthread_mutex_trylock(&_mutex); + if (rc == 0) + return true; + else if (rc == EBUSY) + return false; + else + throw SystemException("cannot lock mutex"); + +} + + +inline void RWLockImpl::writeLockImpl() +{ + readLockImpl(); +} + + +inline bool RWLockImpl::tryWriteLockImpl() +{ + return tryReadLockImpl(); + +} + + +inline void RWLockImpl::unlockImpl() +{ + if (pthread_mutex_unlock(&_mutex)) + throw SystemException("cannot unlock mutex"); +} + + +} // namespace Poco + + +#endif // Foundation_RWLock_VX_INCLUDED |