3 // $Id: Token.inl 80826 2008-03-04 14:51:23Z wotte $
5 #include "ace/config-macros.h"
7 #if defined (ACE_HAS_THREADS)
9 #include "ace/Guard_T.h"
10 #include "ace/Time_Value.h"
12 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
15 ACE_Token::queueing_strategy (void)
17 return this->queueing_strategy_;
21 ACE_Token::queueing_strategy (int queueing_strategy)
23 this->queueing_strategy_ = queueing_strategy == -1 ? -1 : 0;
27 ACE_Token::remove (void)
29 ACE_TRACE ("ACE_Token::remove");
30 // Don't have an implementation for this yet...
31 ACE_NOTSUP_RETURN (-1);
35 ACE_Token::tryacquire (void)
37 ACE_TRACE ("ACE_Token::tryacquire");
38 return this->shared_acquire
39 (0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::WRITE_TOKEN);
43 ACE_Token::waiters (void)
45 ACE_TRACE ("ACE_Token::waiters");
46 ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1);
48 int const ret = this->waiters_;
52 ACE_INLINE ACE_thread_t
53 ACE_Token::current_owner (void)
55 ACE_TRACE ("ACE_Token::current_owner");
56 ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, this->owner_);
62 ACE_Token::acquire_read (void)
64 ACE_TRACE ("ACE_Token::acquire_read");
65 return this->shared_acquire
66 (0, 0, 0, ACE_Token::READ_TOKEN);
70 ACE_Token::acquire_write (void)
72 ACE_TRACE ("ACE_Token::acquire_write");
73 return this->shared_acquire
74 (0, 0, 0, ACE_Token::WRITE_TOKEN);
78 ACE_Token::tryacquire_read (void)
80 ACE_TRACE ("ACE_Token::tryacquire_read");
81 return this->shared_acquire
82 (0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::READ_TOKEN);
86 ACE_Token::acquire_read (void (*sleep_hook_func)(void *),
88 ACE_Time_Value *timeout)
90 ACE_TRACE ("ACE_Token::acquire_read");
91 return this->shared_acquire (sleep_hook_func, arg, timeout, ACE_Token::READ_TOKEN);
95 ACE_Token::tryacquire_write (void)
97 ACE_TRACE ("ACE_Token::tryacquire_write");
98 return this->shared_acquire
99 (0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::WRITE_TOKEN);
103 ACE_Token::tryacquire_write_upgrade (void)
105 ACE_TRACE ("ACE_Token::tryacquire_write_upgrade");
110 ACE_Token::acquire_write (void (*sleep_hook_func)(void *),
112 ACE_Time_Value *timeout)
114 ACE_TRACE ("ACE_Token::acquire_write");
115 return this->shared_acquire (sleep_hook_func, arg, timeout, ACE_Token::WRITE_TOKEN);
119 ACE_Token::ACE_Token_Queue_Entry::wait (ACE_Time_Value *timeout, ACE_Thread_Mutex &lock)
121 #if defined (ACE_TOKEN_USES_SEMAPHORE)
123 int const retv = (timeout == 0 ?
124 this->cv_.acquire () :
125 this->cv_.acquire (*timeout));
129 ACE_UNUSED_ARG (lock);
130 return this->cv_.wait (timeout);
131 #endif /* ACE_TOKEN_USES_SEMAPHORE */
135 ACE_Token::ACE_Token_Queue_Entry::signal (void)
138 #if defined (ACE_TOKEN_USES_SEMAPHORE)
139 this->cv_.release ();
142 #endif /* ACE_TOKEN_USES_SEMAPHORE */
145 ACE_END_VERSIONED_NAMESPACE_DECL
147 #endif /* ACE_HAS_THREADS */
149 /*****************************************************************************/
151 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
154 ACE_Noop_Token::queueing_strategy (void)
160 ACE_Noop_Token::queueing_strategy (int /* queueing_strategy */)
165 ACE_Noop_Token::renew (int, ACE_Time_Value *)
171 ACE_Noop_Token::dump (void) const
175 ACE_END_VERSIONED_NAMESPACE_DECL