28 #ifndef __TERRALIB_COMMON_INTERNAL_THREADINGPOLICIES_H    29 #define __TERRALIB_COMMON_INTERNAL_THREADINGPOLICIES_H    32 #include <boost/noncopyable.hpp>    33 #include <boost/thread.hpp>    35 #define TE_SINGLETHREADING 1    36 #define TE_MULTITHREADING  2    40 #ifndef TE_THREADING_POLICIES    41   #define TE_THREADING_POLICIES TE_MULTITHREADING    44 #if !defined TE_DEFAULT_MUTEX_POLICY    45   #define TE_DEFAULT_MUTEX_POLICY  ::boost::mutex    48 #if !defined TE_DEFAULT_LOCK_READING_POLICY    49   #define TE_DEFAULT_LOCK_READING_POLICY  ::boost::lock_guard<TE_DEFAULT_MUTEX_POLICY>    52 #if !defined TE_DEFAULT_LOCK_WRITING_POLICY    53   #define TE_DEFAULT_LOCK_WRITING_POLICY  ::boost::lock_guard<TE_DEFAULT_MUTEX_POLICY>    71              class MutexPolicy = void,
    72              class LockReadingPolicy = void,
   134 #if TE_THREADING_POLICIES == TE_MULTITHREADING   185               :  m_lock(host->m_mtx)
   205         typedef ObjectLevelLockingPolicy<LockReadingPolicy> 
LockRead;
   206         typedef ObjectLevelLockingPolicy<LockWritingPolicy> 
LockWrite;
   208         friend class ObjectLevelLockingPolicy<LockReadingPolicy>;
   209         friend class ObjectLevelLockingPolicy<LockWritingPolicy>;
   270               : m_lock(Host::sm_mtx)
   276               : m_lock(Host::sm_mtx)
   282               : m_lock(Host::sm_mtx)
   302         typedef ClassLevelLockingPolicy<LockReadingPolicy> 
LockRead;
   303         typedef ClassLevelLockingPolicy<LockWritingPolicy> 
LockWrite;
   305         friend class ClassLevelLockingPolicy<LockReadingPolicy>;
   306         friend class ClassLevelLockingPolicy<LockWritingPolicy>;
   315 #else // TE_THREADING_POLICIES == TE_SINGLETHREADING   317            class MutexPolicy = void,
   318            class LockReadingPolicy = void,
   319            class LockWritingPolicy = 
void> 
class ObjectLevelLockable : 
public NonLockable<ObjectLevelLockable<Host, MutexPolicy, LockReadingPolicy, LockWritingPolicy>, MutexPolicy, LockReadingPolicy, LockWritingPolicy>
   330 #endif // TE_THREADING_POLICIES == TE_MULTITHREADING   335 #endif  // __TERRALIB_COMMON_INTERNAL_THREADINGPOLICIES_H This policy doesn't actually perform a lock. 
 
~ObjectLevelLockable()
Destructor. 
 
LockWritingPolicy LockWritingPolicyType
 
This class acquires a lock over the object class. 
 
NonLockingPolicy()
Constructor to keep the semantics of class-level lock. 
 
~NonLockingPolicy()
Destructor. 
 
ClassLevelLockingPolicy< LockWritingPolicy > LockWrite
 
ClassLevelLockingPolicy< LockReadingPolicy > LockRead
 
ObjectLevelLockable()
Default constructor. 
 
LockingPolicy m_lock
lock policy. 
 
volatile Host VolatileType
 
#define TE_DEFAULT_LOCK_READING_POLICY
 
This class acquires a lock over the host object. 
 
LockReadingPolicy LockReadingPolicyType
 
volatile Host VolatileType
 
NonLockingPolicy< LockReadingPolicy > LockRead
 
~ObjectLevelLockingPolicy()
Destructor. 
 
ClassLevelLockingPolicy(const Host &host)
Constructor to keep the semantics of object-level lock. 
 
ObjectLevelLockingPolicy(const Host *host)
Through this constructor the pointed host object will be locked. 
 
This class doesn't truelly acquire a lock over the host object/class. 
 
NonLockingPolicy< LockWritingPolicy > LockWrite
 
ObjectLevelLockable(const ObjectLevelLockable &)
Copy constructor. 
 
ObjectLevelLockingPolicy< LockWritingPolicy > LockWrite
 
LockingPolicy m_lock
lock policy. 
 
#define TE_DEFAULT_LOCK_WRITING_POLICY
 
NonLockingPolicy & operator=(const NonLockingPolicy &)
 
This policy assures a class-level locking scheme for a derived class. 
 
volatile Host VolatileType
 
#define TE_DEFAULT_MUTEX_POLICY
 
MutexPolicy m_mtx
The mutex used to control the object lock. 
 
NonLockingPolicy(const Host &)
Constructor. 
 
ClassLevelLockingPolicy(const Host *host)
Constructor to keep the semantics of object-level lock. 
 
NonLockingPolicy(const Host *)
Constructor. 
 
This policy assures an object-level locking scheme for a derived class. 
 
ObjectLevelLockingPolicy(const Host &host)
Through this constructor the host object will be locked. 
 
ObjectLevelLockingPolicy< LockReadingPolicy > LockRead
 
MutexPolicy MutexPolicyType
 
~ClassLevelLockingPolicy()
Destructor. 
 
ClassLevelLockingPolicy()
Default constructor. 
 
static MutexPolicy sm_mtx
The mutex used to control the class lock.