3 // $Id: Guard_T.inl 82508 2008-08-05 13:52:48Z johnnyw $
5 #include "ace/RW_Thread_Mutex.h"
7 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
9 template <class ACE_LOCK> ACE_INLINE int
10 ACE_Guard<ACE_LOCK>::acquire (void)
12 return this->owner_ = this->lock_->acquire ();
15 template <class ACE_LOCK> ACE_INLINE int
16 ACE_Guard<ACE_LOCK>::tryacquire (void)
18 return this->owner_ = this->lock_->tryacquire ();
21 template <class ACE_LOCK> ACE_INLINE int
22 ACE_Guard<ACE_LOCK>::release (void)
24 if (this->owner_ == -1)
29 return this->lock_->release ();
33 template <class ACE_LOCK> ACE_INLINE
34 ACE_Guard<ACE_LOCK>::ACE_Guard (ACE_LOCK &l)
41 template <class ACE_LOCK> ACE_INLINE
42 ACE_Guard<ACE_LOCK>::ACE_Guard (ACE_LOCK &l, bool block)
52 template <class ACE_LOCK> ACE_INLINE
53 ACE_Guard<ACE_LOCK>::ACE_Guard (ACE_LOCK &l, bool /* block */, int become_owner)
55 owner_ (become_owner == 0 ? -1 : 0)
59 // Implicitly and automatically acquire (or try to acquire) the
62 template <class ACE_LOCK> ACE_INLINE
63 ACE_Guard<ACE_LOCK>::~ACE_Guard (void)
68 template <class ACE_LOCK> ACE_INLINE int
69 ACE_Guard<ACE_LOCK>::locked (void) const
71 return this->owner_ != -1;
74 template <class ACE_LOCK> ACE_INLINE int
75 ACE_Guard<ACE_LOCK>::remove (void)
77 return this->lock_->remove ();
80 template <class ACE_LOCK> ACE_INLINE void
81 ACE_Guard<ACE_LOCK>::disown (void)
86 template <class ACE_LOCK> ACE_INLINE
87 ACE_Write_Guard<ACE_LOCK>::ACE_Write_Guard (ACE_LOCK &m)
88 : ACE_Guard<ACE_LOCK> (&m)
90 this->acquire_write ();
93 template <class ACE_LOCK> ACE_INLINE int
94 ACE_Write_Guard<ACE_LOCK>::acquire_write (void)
96 return this->owner_ = this->lock_->acquire_write ();
99 template <class ACE_LOCK> ACE_INLINE int
100 ACE_Write_Guard<ACE_LOCK>::acquire (void)
102 return this->owner_ = this->lock_->acquire_write ();
105 template <class ACE_LOCK> ACE_INLINE int
106 ACE_Write_Guard<ACE_LOCK>::tryacquire_write (void)
108 return this->owner_ = this->lock_->tryacquire_write ();
111 template <class ACE_LOCK> ACE_INLINE int
112 ACE_Write_Guard<ACE_LOCK>::tryacquire (void)
114 return this->owner_ = this->lock_->tryacquire_write ();
117 template <class ACE_LOCK> ACE_INLINE
118 ACE_Write_Guard<ACE_LOCK>::ACE_Write_Guard (ACE_LOCK &m,
120 : ACE_Guard<ACE_LOCK> (&m)
123 this->acquire_write ();
125 this->tryacquire_write ();
128 template <class ACE_LOCK> ACE_INLINE int
129 ACE_Read_Guard<ACE_LOCK>::acquire_read (void)
131 return this->owner_ = this->lock_->acquire_read ();
134 template <class ACE_LOCK> ACE_INLINE int
135 ACE_Read_Guard<ACE_LOCK>::acquire (void)
137 return this->owner_ = this->lock_->acquire_read ();
140 template <class ACE_LOCK> ACE_INLINE int
141 ACE_Read_Guard<ACE_LOCK>::tryacquire_read (void)
143 return this->owner_ = this->lock_->tryacquire_read ();
146 template <class ACE_LOCK> ACE_INLINE int
147 ACE_Read_Guard<ACE_LOCK>::tryacquire (void)
149 return this->owner_ = this->lock_->tryacquire_read ();
152 template <class ACE_LOCK> ACE_INLINE
153 ACE_Read_Guard<ACE_LOCK>::ACE_Read_Guard (ACE_LOCK &m)
154 : ACE_Guard<ACE_LOCK> (&m)
156 this->acquire_read ();
159 template <class ACE_LOCK> ACE_INLINE
160 ACE_Read_Guard<ACE_LOCK>::ACE_Read_Guard (ACE_LOCK &m,
162 : ACE_Guard<ACE_LOCK> (&m)
165 this->acquire_read ();
167 this->tryacquire_read ();
170 ACE_END_VERSIONED_NAMESPACE_DECL