Public Member Functions | Private Member Functions | Private Attributes | List of all members
xsens::LockSuspendable Class Reference

A readers-writer lock class that is able to be suspended. More...

#include <xsens_mutex.h>

Public Member Functions

bool isLocked (LockState minimumState) const
 
bool isSuspended () const
 
bool isUsing (GuardedMutex const *mutex) const
 Check if the lock is using the supplied mutex. More...
 
bool isUsing (MutexReadWriteSuspendable const *mutex) const
 Check if the lock is using the supplied mutex. More...
 
bool lock (bool write)
 Convenience function that accepts the boolean write value, forwards to lock(LockState) More...
 
bool lock (LockState desiredLockState)
 Make sure that the lock has exactly the given lock state. More...
 
bool lockRead ()
 Convenience function for lock(LS_Read);. More...
 
 LockSuspendable (GuardedMutex *mutex, LockState lockState)
 Constructs a lock using a guarded mutex. More...
 
 LockSuspendable (MutexReadWriteSuspendable *mutex, LockState lockState)
 Constructs a lock using a suspendable readers-writer mutex. More...
 
bool lockSuspendedWrite ()
 Convenience function for lock(LS_SuspendedWrite);. More...
 
bool lockWrite ()
 Convenience function for lock(LS_Write);. More...
 
bool mutexIsSuspended () const volatile
 
bool resume ()
 Resume a write lock. More...
 
bool suspend ()
 Suspend a write lock, allowing readers access, but preventing others from getting a write lock. More...
 
bool unlock () noexcept
 Unlocks the write or read locked mutex. More...
 
 ~LockSuspendable ()
 

Private Member Functions

 LockSuspendable (LockSuspendable &&)=delete
 
 LockSuspendable (LockSuspendable const &)=delete
 
LockSuspendableoperator= (LockSuspendable &&)=delete
 
LockSuspendableoperator= (LockSuspendable const &)=delete
 

Private Attributes

volatile std::atomic_bool m_iSuspended
 
volatile std::atomic_bool m_lockedR
 
volatile std::atomic_bool m_lockedW
 
MutexReadWriteSuspendablem_mutex
 

Detailed Description

A readers-writer lock class that is able to be suspended.

Definition at line 1344 of file xsens_mutex.h.

Constructor & Destructor Documentation

◆ LockSuspendable() [1/4]

xsens::LockSuspendable::LockSuspendable ( LockSuspendable const &  )
privatedelete

◆ LockSuspendable() [2/4]

xsens::LockSuspendable::LockSuspendable ( LockSuspendable &&  )
privatedelete

◆ LockSuspendable() [3/4]

xsens::LockSuspendable::LockSuspendable ( MutexReadWriteSuspendable mutex,
LockState  lockState 
)
inline

Constructs a lock using a suspendable readers-writer mutex.

Definition at line 1361 of file xsens_mutex.h.

◆ LockSuspendable() [4/4]

xsens::LockSuspendable::LockSuspendable ( GuardedMutex mutex,
LockState  lockState 
)
inline

Constructs a lock using a guarded mutex.

Definition at line 1373 of file xsens_mutex.h.

◆ ~LockSuspendable()

xsens::LockSuspendable::~LockSuspendable ( )
inline

Definition at line 1383 of file xsens_mutex.h.

Member Function Documentation

◆ isLocked()

bool xsens::LockSuspendable::isLocked ( LockState  minimumState) const
inline
Returns
True if the lock has at least the given state. A suspended write lock is treated as a read lock.
Parameters
minimumStateThe minimum lock state to check with

Definition at line 1534 of file xsens_mutex.h.

◆ isSuspended()

bool xsens::LockSuspendable::isSuspended ( ) const
inline
Returns
True if mutex is suspended

Definition at line 1497 of file xsens_mutex.h.

◆ isUsing() [1/2]

bool xsens::LockSuspendable::isUsing ( GuardedMutex const *  mutex) const
inline

Check if the lock is using the supplied mutex.

Parameters
mutexThe supplied guarded mutex
Returns
True if it is equal

Definition at line 1560 of file xsens_mutex.h.

◆ isUsing() [2/2]

bool xsens::LockSuspendable::isUsing ( MutexReadWriteSuspendable const *  mutex) const
inline

Check if the lock is using the supplied mutex.

Parameters
mutexThe supplied suspendable readers-writer mutex
Returns
True if it is equal

Definition at line 1551 of file xsens_mutex.h.

◆ lock() [1/2]

bool xsens::LockSuspendable::lock ( bool  write)
inline

Convenience function that accepts the boolean write value, forwards to lock(LockState)

Parameters
writeIf set to true, write mode is used, otherwise read mode
Returns
True if successfully locked

Definition at line 1442 of file xsens_mutex.h.

◆ lock() [2/2]

bool xsens::LockSuspendable::lock ( LockState  desiredLockState)
inline

Make sure that the lock has exactly the given lock state.

The lock will be upgraded/downgraded as required, possibly unlocking in between

Parameters
desiredLockStateIf set not to read lock state then it will lock the mutex
Returns
True if successfully locked

Definition at line 1393 of file xsens_mutex.h.

◆ lockRead()

bool xsens::LockSuspendable::lockRead ( )
inline

Convenience function for lock(LS_Read);.

Returns
True if successful

Definition at line 1450 of file xsens_mutex.h.

◆ lockSuspendedWrite()

bool xsens::LockSuspendable::lockSuspendedWrite ( )
inline

Convenience function for lock(LS_SuspendedWrite);.

Returns
True if successful

Definition at line 1466 of file xsens_mutex.h.

◆ lockWrite()

bool xsens::LockSuspendable::lockWrite ( )
inline

Convenience function for lock(LS_Write);.

Returns
True if successful

Definition at line 1458 of file xsens_mutex.h.

◆ mutexIsSuspended()

bool xsens::LockSuspendable::mutexIsSuspended ( ) const volatile
inline
Returns
True if mutex is suspended
Note
This function check the current status of the mutex to tell whether it is actually suspended

Definition at line 1505 of file xsens_mutex.h.

◆ operator=() [1/2]

LockSuspendable& xsens::LockSuspendable::operator= ( LockSuspendable &&  )
privatedelete

◆ operator=() [2/2]

LockSuspendable& xsens::LockSuspendable::operator= ( LockSuspendable const &  )
privatedelete

◆ resume()

bool xsens::LockSuspendable::resume ( )
inline

Resume a write lock.

Returns
True if successful or if already resuming

Definition at line 1486 of file xsens_mutex.h.

◆ suspend()

bool xsens::LockSuspendable::suspend ( )
inline

Suspend a write lock, allowing readers access, but preventing others from getting a write lock.

Returns
True if successful or if already suspended

Definition at line 1474 of file xsens_mutex.h.

◆ unlock()

bool xsens::LockSuspendable::unlock ( )
inlinenoexcept

Unlocks the write or read locked mutex.

Returns
True if the mutex is successfully unlocked. False if it was not locked.

Definition at line 1513 of file xsens_mutex.h.

Member Data Documentation

◆ m_iSuspended

volatile std::atomic_bool xsens::LockSuspendable::m_iSuspended
private

Definition at line 1350 of file xsens_mutex.h.

◆ m_lockedR

volatile std::atomic_bool xsens::LockSuspendable::m_lockedR
private

Definition at line 1348 of file xsens_mutex.h.

◆ m_lockedW

volatile std::atomic_bool xsens::LockSuspendable::m_lockedW
private

Definition at line 1349 of file xsens_mutex.h.

◆ m_mutex

MutexReadWriteSuspendable* xsens::LockSuspendable::m_mutex
private

Definition at line 1347 of file xsens_mutex.h.


The documentation for this class was generated from the following file:


xsens_mti_driver
Author(s):
autogenerated on Sun Sep 3 2023 02:43:23