Mixe for Privacy and Anonymity in the Internet
Public Member Functions | Protected Member Functions | Private Attributes
CALockAble Class Reference

From this class other classes could be derived, which need some kind from "locking" in memory. More...

#include <CALockAble.hpp>

Inheritance diagram for CALockAble:
[legend]
Collaboration diagram for CALockAble:
[legend]

List of all members.

Public Member Functions

 CALockAble ()
virtual ~CALockAble ()
SINT32 lock ()
 Locks the lockable object by threadsafe incrementing a reference counter.
SINT32 unlock ()
 Unlocks the lockable object by threadsafe decrementing a reference counter.

Protected Member Functions

SINT32 waitForDestroy ()
 If called checks if the reference counter equals zero.

Private Attributes

CAConditionVariable m_ConVar
 A conditional variable, which would be signaled if the rerference counter reaches zero.
UINT32 m_nLockCount
 The reference counter.

Detailed Description

From this class other classes could be derived, which need some kind from "locking" in memory.

Imagine for instance that thread t1 creates an object o of class c and uses it. During that a second thread t2 destroies o by calling delete o. Clearly this would be desasterous. To solve this problem cc should be derived from CALockAble. Than t1 calls o.lock() before using o and o.unlock() if t1 finsihed using o. If t2 calls delete o between the lock() / unlock() calls, it would block until all references of o are unlocked. Probablly this class is usefull for other tings, too...

Definition at line 37 of file CALockAble.hpp.


Constructor & Destructor Documentation

CALockAble::CALockAble ( ) [inline]

Definition at line 40 of file CALockAble.hpp.

References m_nLockCount.

        {
          m_nLockCount=1;
        }
virtual CALockAble::~CALockAble ( ) [inline, virtual]

Definition at line 45 of file CALockAble.hpp.

        {
        }

Member Function Documentation

SINT32 CALockAble::lock ( ) [inline]

Locks the lockable object by threadsafe incrementing a reference counter.

Return values:
E_SUCCESS

Definition at line 52 of file CALockAble.hpp.

References E_SUCCESS, CAMutex::lock(), m_ConVar, m_nLockCount, and CAMutex::unlock().

Referenced by CAMiddleMixChannelList::getInToOut(), CAMiddleMixChannelList::getOutToIn_intern_without_lock(), and CAFirstMixA::loop().

Here is the call graph for this function:

SINT32 CALockAble::unlock ( ) [inline]

Unlocks the lockable object by threadsafe decrementing a reference counter.

The counter would never become less than zero. Every thread, which waits in waitForDestroy() will be signaled.

Return values:
E_SUCCESS

Definition at line 64 of file CALockAble.hpp.

References E_SUCCESS, CAMutex::lock(), m_ConVar, m_nLockCount, CAConditionVariable::signal(), and CAMutex::unlock().

Referenced by mm_loopReadFromMixAfter(), and mm_loopReadFromMixBefore().

Here is the call graph for this function:

SINT32 CALockAble::waitForDestroy ( ) [inline, protected]

If called checks if the reference counter equals zero.

If the reference counter is greater than zero, the call blocks.

Return values:
E_SUCCESS

Definition at line 79 of file CALockAble.hpp.

References E_SUCCESS, CAMutex::lock(), m_ConVar, m_nLockCount, CAMutex::unlock(), and CAConditionVariable::wait().

Referenced by CASymCipher::~CASymCipher().

Here is the call graph for this function:


Member Data Documentation

A conditional variable, which would be signaled if the rerference counter reaches zero.

Definition at line 90 of file CALockAble.hpp.

Referenced by lock(), unlock(), and waitForDestroy().

The reference counter.

Definition at line 92 of file CALockAble.hpp.

Referenced by CALockAble(), lock(), unlock(), and waitForDestroy().


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