te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy > Class Template Reference

This policy assures an object-level locking scheme for a derived class. More...

#include <ThreadingPolicies.h>

Classes

class  ObjectLevelLockingPolicy
 This class acquires a lock over the host object. More...
 

Public Types

typedef ObjectLevelLockingPolicy< LockReadingPolicy > LockRead
 
typedef ObjectLevelLockingPolicy< LockWritingPolicy > LockWrite
 
typedef volatile Host VolatileType
 

Protected Member Functions

 ObjectLevelLockable ()
 Default constructor. More...
 
 ObjectLevelLockable (const ObjectLevelLockable &)
 Copy constructor. More...
 
 ~ObjectLevelLockable ()
 Destructor. More...
 

Private Attributes

MutexPolicy m_mtx
 The mutex used to control the object lock. More...
 

Friends

class ObjectLevelLockingPolicy< LockReadingPolicy >
 
class ObjectLevelLockingPolicy< LockWritingPolicy >
 

Detailed Description

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
class te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >

This policy assures an object-level locking scheme for a derived class.

Requirements on types:

  • Host: is the type of the derived class from this policy.
  • MutexPolicy: any type that have a lock and unlock method. When using boost it can be one of the follwoing: boost::mutex, bost::timed_mutex, bost::recursive_mutex, boost::recursive_timed_mutex or boost::shared_mutex.
  • The LockReadingPolicy and LockWritingPolicy may be: boost::lock_guard, boost::unique_lock, boost::shared_lock, boost::upgrade_lock, boost::upgrade_to_unique_lock

Definition at line 151 of file ThreadingPolicies.h.

Member Typedef Documentation

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
typedef ObjectLevelLockingPolicy<LockReadingPolicy> te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >::LockRead

Definition at line 205 of file ThreadingPolicies.h.

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
typedef ObjectLevelLockingPolicy<LockWritingPolicy> te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >::LockWrite

Definition at line 206 of file ThreadingPolicies.h.

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
typedef volatile Host te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >::VolatileType

Definition at line 204 of file ThreadingPolicies.h.

Constructor & Destructor Documentation

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >::ObjectLevelLockable ( )
inlineprotected

Default constructor.

Definition at line 214 of file ThreadingPolicies.h.

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >::ObjectLevelLockable ( const ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy > &  )
inlineprotected

Copy constructor.

Definition at line 220 of file ThreadingPolicies.h.

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >::~ObjectLevelLockable ( )
inlineprotected

Destructor.

Definition at line 226 of file ThreadingPolicies.h.

Friends And Related Function Documentation

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
friend class ObjectLevelLockingPolicy< LockReadingPolicy >
friend

Definition at line 208 of file ThreadingPolicies.h.

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
friend class ObjectLevelLockingPolicy< LockWritingPolicy >
friend

Definition at line 209 of file ThreadingPolicies.h.

Member Data Documentation

template<class Host, class MutexPolicy = TE_DEFAULT_MUTEX_POLICY, class LockReadingPolicy = TE_DEFAULT_LOCK_READING_POLICY, class LockWritingPolicy = TE_DEFAULT_LOCK_WRITING_POLICY>
MutexPolicy te::common::ObjectLevelLockable< Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy >::m_mtx
mutableprivate

The mutex used to control the object lock.

Definition at line 232 of file ThreadingPolicies.h.


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