Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Reverse_Lock Class Template Reference

A reverse (or anti) lock. More...

#include <Synch_T.h>

Inheritance diagram for ACE_Reverse_Lock:

Inheritance graph
[legend]
Collaboration diagram for ACE_Reverse_Lock:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_LOCKING_MECHANISM ACE_LOCK

Public Methods

 ACE_Reverse_Lock (ACE_LOCKING_MECHANISM &lock, ACE_Acquire_Method::METHOD_TYPE acquire_method=ACE_Acquire_Method::ACE_REGULAR)
 Constructor. All locking requests will be forwarded to <lock>. More...

virtual ~ACE_Reverse_Lock (void)
 Destructor. If <lock_> was not passed in by the user, it will be deleted. More...

virtual int acquire (void)
 Release the lock. More...

virtual int tryacquire (void)
 Release the lock. More...

virtual int release (void)
 Acquire the lock. More...

virtual int acquire_read (void)
 Release the lock. More...

virtual int acquire_write (void)
 Release the lock. More...

virtual int tryacquire_read (void)
 Release the lock. More...

virtual int tryacquire_write (void)
 Release the lock. More...

virtual int tryacquire_write_upgrade (void)
 Release the lock. More...

virtual int remove (void)
 Explicitly destroy the lock. More...


Private Attributes

ACE_LOCKING_MECHANISM & lock_
 The concrete locking mechanism that all the methods delegate to. More...

ACE_Acquire_Method::METHOD_TYPE acquire_method_
 This indicates what kind of acquire method will be called. More...


Detailed Description

template<class ACE_LOCKING_MECHANISM>
class ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >

A reverse (or anti) lock.

This is an interesting adapter class that changes a lock into a reverse lock, i.e., <acquire> on this class calls <release> on the lock, and <release> on this class calls <acquire> on the lock. One motivation for this class is when we temporarily want to release a lock (which we have already acquired) but then reacquire it soon after. An alternative design would be to add a Anti_Guard or Reverse_Guard class which would <release> on construction and <acquire> destruction. However, there are *many* varieties of the Guard class and this design choice would lead to at least 6 new classes. One new ACE_Reverse_Lock class seemed more reasonable.

Definition at line 152 of file Synch_T.h.


Member Typedef Documentation

template<class ACE_LOCKING_MECHANISM>
typedef ACE_LOCKING_MECHANISM ACE_Reverse_Lock::ACE_LOCK
 

Definition at line 156 of file Synch_T.h.


Constructor & Destructor Documentation

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::ACE_Reverse_Lock ACE_LOCKING_MECHANISM &    lock,
ACE_Acquire_Method::METHOD_TYPE    acquire_method = ACE_Acquire_Method::ACE_REGULAR
 

Constructor. All locking requests will be forwarded to <lock>.

Definition at line 261 of file Synch_T.i.

References ACE_Acquire_Method::METHOD_TYPE.

00263   : lock_ (lock),
00264     acquire_method_ (acquire_method)
00265 {
00266 }

template<class ACE_LOCKING_MECHANISM>
ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::~ACE_Reverse_Lock void    [virtual]
 

Destructor. If <lock_> was not passed in by the user, it will be deleted.

Definition at line 33 of file Synch_T.cpp.

00034 {
00035 }


Member Function Documentation

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::acquire void    [virtual]
 

Release the lock.

Implements ACE_Lock.

Definition at line 277 of file Synch_T.i.

References lock_.

00278 {
00279   return this->lock_.release ();
00280 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::acquire_read void    [virtual]
 

Release the lock.

Implements ACE_Lock.

Definition at line 303 of file Synch_T.i.

00304 {
00305   ACE_NOTSUP_RETURN (-1);
00306 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::acquire_write void    [virtual]
 

Release the lock.

Implements ACE_Lock.

Definition at line 310 of file Synch_T.i.

00311 {
00312   ACE_NOTSUP_RETURN (-1);
00313 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::release void    [virtual]
 

Acquire the lock.

Implements ACE_Lock.

Definition at line 291 of file Synch_T.i.

References ACE_Acquire_Method::ACE_READ, ACE_Acquire_Method::ACE_WRITE, acquire_method_, and lock_.

00292 {
00293   if (this->acquire_method_ == ACE_Acquire_Method::ACE_READ)
00294     return this->lock_.acquire_read ();
00295   else if (this->acquire_method_ == ACE_Acquire_Method::ACE_WRITE)
00296     return this->lock_.acquire_write ();
00297   else
00298     return this->lock_.acquire ();
00299 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::remove void    [virtual]
 

Explicitly destroy the lock.

Implements ACE_Lock.

Definition at line 270 of file Synch_T.i.

References lock_.

00271 {
00272   return this->lock_.remove ();
00273 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::tryacquire void    [virtual]
 

Release the lock.

Implements ACE_Lock.

Definition at line 284 of file Synch_T.i.

00285 {
00286   ACE_NOTSUP_RETURN (-1);
00287 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::tryacquire_read void    [virtual]
 

Release the lock.

Implements ACE_Lock.

Definition at line 317 of file Synch_T.i.

00318 {
00319   ACE_NOTSUP_RETURN (-1);
00320 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::tryacquire_write void    [virtual]
 

Release the lock.

Implements ACE_Lock.

Definition at line 324 of file Synch_T.i.

00325 {
00326   ACE_NOTSUP_RETURN (-1);
00327 }

template<class ACE_LOCKING_MECHANISM>
ACE_INLINE int ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >::tryacquire_write_upgrade void    [virtual]
 

Release the lock.

Implements ACE_Lock.

Definition at line 331 of file Synch_T.i.

00332 {
00333   ACE_NOTSUP_RETURN (-1);
00334 }


Member Data Documentation

template<class ACE_LOCKING_MECHANISM>
ACE_Acquire_Method::METHOD_TYPE ACE_Reverse_Lock::acquire_method_ [private]
 

This indicates what kind of acquire method will be called.

Definition at line 201 of file Synch_T.h.

Referenced by release.

template<class ACE_LOCKING_MECHANISM>
ACE_LOCKING_MECHANISM& ACE_Reverse_Lock::lock_ [private]
 

The concrete locking mechanism that all the methods delegate to.

Definition at line 198 of file Synch_T.h.

Referenced by acquire, release, and remove.


The documentation for this class was generated from the following files:
Generated on Mon Jun 16 12:55:26 2003 for ACE by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002