#include <Guard_T.h>
Inheritance diagram for ACE_Guard< ACE_LOCK >:
Public Member Functions | |
ACE_Guard (ACE_LOCK &l) | |
ACE_Guard (ACE_LOCK &l, int block) | |
ACE_Guard (ACE_LOCK &l, int block, int become_owner) | |
~ACE_Guard (void) | |
Implicitly release the lock. | |
int | acquire (void) |
Explicitly acquire the lock. | |
int | tryacquire (void) |
Conditionally acquire the lock (i.e., won't block). | |
int | release (void) |
Explicitly release the lock, but only if it is held! | |
void | disown (void) |
int | locked (void) const |
int | remove (void) |
Explicitly remove the lock. | |
void | dump (void) const |
Dump the state of an object. | |
Protected Member Functions | |
ACE_Guard (ACE_LOCK *lock) | |
Helper, meant for subclass only. | |
Protected Attributes | |
ACE_LOCK * | lock_ |
Pointer to the ACE_LOCK we're guarding. | |
int | owner_ |
Keeps track of whether we acquired the lock or failed. | |
Private Member Functions | |
void | operator= (const ACE_Guard< ACE_LOCK > &) |
ACE_Guard (const ACE_Guard< ACE_LOCK > &) |
The <ACE_LOCK> class given as an actual parameter must provide at the very least the <acquire>, <tryacquire>, <release>, and <remove> methods.
Definition at line 42 of file Guard_T.h.
Implicitly and automatically acquire (or try to acquire) the lock. If block is non-0 then <acquire> the <ACE_LOCK>, else <tryacquire> it.
Definition at line 42 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::acquire(), and ACE_Guard< ACE_LOCK >::tryacquire().
00043 : lock_ (&l), 00044 owner_ (0) 00045 { 00046 if (block) 00047 this->acquire (); 00048 else 00049 this->tryacquire (); 00050 }
ACE_INLINE ACE_Guard< ACE_LOCK >::ACE_Guard | ( | ACE_LOCK & | l, | |
int | block, | |||
int | become_owner | |||
) |
Initialise the guard without implicitly acquiring the lock. The <become_owner> parameter indicates whether the guard should release the lock implicitly on destruction. The <block> parameter is ignored and is used here to disambiguate with the preceding constructor.
Definition at line 53 of file Guard_T.inl.
Implicitly release the lock.
Definition at line 63 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::release().
00064 { 00065 this->release (); 00066 }
ACE_Guard< ACE_LOCK >::ACE_Guard | ( | const ACE_Guard< ACE_LOCK > & | ) | [private] |
ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE int ACE_Guard< ACE_LOCK >::acquire | ( | void | ) |
Explicitly acquire the lock.
Reimplemented in ACE_Write_Guard< ACE_LOCK >, and ACE_Read_Guard< ACE_LOCK >.
Definition at line 10 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::lock_, and ACE_Guard< ACE_LOCK >::owner_.
Referenced by ACE_Guard< ACE_LOCK >::ACE_Guard().
ACE_INLINE void ACE_Guard< ACE_LOCK >::disown | ( | void | ) |
Relinquish ownership of the lock so that it is not released implicitly in the destructor.
Definition at line 81 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::owner_.
00082 { 00083 this->owner_ = -1; 00084 }
ACE_BEGIN_VERSIONED_NAMESPACE_DECL void ACE_Guard< ACE_LOCK >::dump | ( | void | ) | const |
Dump the state of an object.
Reimplemented in ACE_Write_Guard< ACE_LOCK >, and ACE_Read_Guard< ACE_LOCK >.
Definition at line 27 of file Guard_T.cpp.
References ACE_BEGIN_DUMP, ACE_DEBUG, ACE_END_DUMP, ACE_TEXT, and LM_DEBUG.
Referenced by ACE_Read_Guard< ACE_LOCK >::dump(), and ACE_Write_Guard< ACE_LOCK >::dump().
00028 { 00029 #if defined (ACE_HAS_DUMP) 00030 // ACE_TRACE ("ACE_Guard<ACE_LOCK>::dump"); 00031 00032 ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); 00033 ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("mutex_ = %x\n"), this->lock_)); 00034 ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("owner_ = %d\n"), this->owner_)); 00035 ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); 00036 #endif /* ACE_HAS_DUMP */ 00037 }
ACE_INLINE int ACE_Guard< ACE_LOCK >::locked | ( | void | ) | const |
1 if locked, 0 if couldn't acquire the lock (errno will contain the reason for this).
Definition at line 69 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::owner_.
00070 { 00071 return this->owner_ != -1; 00072 }
void ACE_Guard< ACE_LOCK >::operator= | ( | const ACE_Guard< ACE_LOCK > & | ) | [private] |
ACE_INLINE int ACE_Guard< ACE_LOCK >::release | ( | void | ) |
Explicitly release the lock, but only if it is held!
Definition at line 22 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::lock_, and ACE_Guard< ACE_LOCK >::owner_.
Referenced by ACE_Guard< ACE_LOCK >::~ACE_Guard().
00023 { 00024 if (this->owner_ == -1) 00025 return -1; 00026 else 00027 { 00028 this->owner_ = -1; 00029 return this->lock_->release (); 00030 } 00031 }
ACE_INLINE int ACE_Guard< ACE_LOCK >::remove | ( | void | ) |
Explicitly remove the lock.
Definition at line 75 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::lock_.
00076 { 00077 return this->lock_->remove (); 00078 }
ACE_INLINE int ACE_Guard< ACE_LOCK >::tryacquire | ( | void | ) |
Conditionally acquire the lock (i.e., won't block).
Reimplemented in ACE_Write_Guard< ACE_LOCK >, and ACE_Read_Guard< ACE_LOCK >.
Definition at line 16 of file Guard_T.inl.
References ACE_Guard< ACE_LOCK >::lock_, and ACE_Guard< ACE_LOCK >::owner_.
Referenced by ACE_Guard< ACE_LOCK >::ACE_Guard().
Pointer to the ACE_LOCK we're guarding.
Definition at line 99 of file Guard_T.h.
Referenced by ACE_Read_Guard< ACE_LOCK >::acquire(), ACE_Write_Guard< ACE_LOCK >::acquire(), ACE_Guard< ACE_LOCK >::acquire(), ACE_Read_Guard< ACE_LOCK >::acquire_read(), ACE_Write_Guard< ACE_LOCK >::acquire_write(), ACE_Guard< ACE_LOCK >::release(), ACE_Guard< ACE_LOCK >::remove(), ACE_Read_Guard< ACE_LOCK >::tryacquire(), ACE_Write_Guard< ACE_LOCK >::tryacquire(), ACE_Guard< ACE_LOCK >::tryacquire(), ACE_Read_Guard< ACE_LOCK >::tryacquire_read(), and ACE_Write_Guard< ACE_LOCK >::tryacquire_write().
Keeps track of whether we acquired the lock or failed.
Definition at line 102 of file Guard_T.h.
Referenced by ACE_Read_Guard< ACE_LOCK >::acquire(), ACE_Write_Guard< ACE_LOCK >::acquire(), ACE_Guard< ACE_LOCK >::acquire(), ACE_Read_Guard< ACE_LOCK >::acquire_read(), ACE_Write_Guard< ACE_LOCK >::acquire_write(), ACE_Guard< ACE_LOCK >::disown(), ACE_Guard< ACE_LOCK >::locked(), ACE_Guard< ACE_LOCK >::release(), ACE_Read_Guard< ACE_LOCK >::tryacquire(), ACE_Write_Guard< ACE_LOCK >::tryacquire(), ACE_Guard< ACE_LOCK >::tryacquire(), ACE_Read_Guard< ACE_LOCK >::tryacquire_read(), and ACE_Write_Guard< ACE_LOCK >::tryacquire_write().