Restore build on FreeBSD.
[getmangos.git] / dep / ACE_wrappers / ace / Token.inl
blobf09a0e6f3de6b330931a8a42bc0fa3b2221a2ee0
1 // -*- C++ -*-
2 //
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
14 ACE_INLINE int
15 ACE_Token::queueing_strategy (void)
17   return this->queueing_strategy_;
20 ACE_INLINE void
21 ACE_Token::queueing_strategy (int queueing_strategy)
23   this->queueing_strategy_ = queueing_strategy == -1 ? -1 : 0;
26 ACE_INLINE int
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);
34 ACE_INLINE int
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);
42 ACE_INLINE int
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_;
49   return ret;
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_);
58   return this->owner_;
61 ACE_INLINE int
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);
69 ACE_INLINE int
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);
77 ACE_INLINE int
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);
85 ACE_INLINE int
86 ACE_Token::acquire_read (void (*sleep_hook_func)(void *),
87                          void *arg,
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);
94 ACE_INLINE int
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);
102 ACE_INLINE int
103 ACE_Token::tryacquire_write_upgrade (void)
105   ACE_TRACE ("ACE_Token::tryacquire_write_upgrade");
106   return 0;
109 ACE_INLINE int
110 ACE_Token::acquire_write (void (*sleep_hook_func)(void *),
111                           void *arg,
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);
118 ACE_INLINE int
119 ACE_Token::ACE_Token_Queue_Entry::wait (ACE_Time_Value *timeout, ACE_Thread_Mutex &lock)
121 #if defined (ACE_TOKEN_USES_SEMAPHORE)
122   lock.release ();
123   int const retv = (timeout == 0 ?
124                     this->cv_.acquire () :
125                     this->cv_.acquire (*timeout));
126   lock.acquire ();
127   return retv;
128 #else
129   ACE_UNUSED_ARG (lock);
130   return this->cv_.wait (timeout);
131 #endif /* ACE_TOKEN_USES_SEMAPHORE */
134 ACE_INLINE int
135 ACE_Token::ACE_Token_Queue_Entry::signal (void)
137   return
138 #if defined (ACE_TOKEN_USES_SEMAPHORE)
139     this->cv_.release ();
140 #else
141     this->cv_.signal ();
142 #endif /* ACE_TOKEN_USES_SEMAPHORE */
145 ACE_END_VERSIONED_NAMESPACE_DECL
147 #endif /* ACE_HAS_THREADS */
149 /*****************************************************************************/
151 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
153 ACE_INLINE int
154 ACE_Noop_Token::queueing_strategy (void)
156   return -1;
159 ACE_INLINE void
160 ACE_Noop_Token::queueing_strategy (int /* queueing_strategy */)
164 ACE_INLINE int
165 ACE_Noop_Token::renew (int, ACE_Time_Value *)
167   return 0;
170 ACE_INLINE void
171 ACE_Noop_Token::dump (void) const
175 ACE_END_VERSIONED_NAMESPACE_DECL