Condition_T.cpp

Go to the documentation of this file.
00001 // Condition_T.cpp,v 4.4 2006/05/09 07:19:10 jwillemsen Exp
00002 
00003 #ifndef ACE_CONDITION_T_CPP
00004 #define ACE_CONDITION_T_CPP
00005 
00006 #include "ace/Condition_T.h"
00007 
00008 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00009 # pragma once
00010 #endif /* ACE_LACKS_PRAGMA_ONCE */
00011 
00012 #if defined (ACE_HAS_THREADS)
00013 
00014 #include "ace/Log_Msg.h"
00015 
00016 #if !defined (__ACE_INLINE__)
00017 #include "ace/Condition_T.inl"
00018 #endif /* __ACE_INLINE__ */
00019 
00020 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00021 
00022 ACE_ALLOC_HOOK_DEFINE(ACE_Condition)
00023 
00024 template <class MUTEX> void
00025 ACE_Condition<MUTEX>::dump (void) const
00026 {
00027 #if defined (ACE_HAS_DUMP)
00028 // ACE_TRACE ("ACE_Condition<MUTEX>::dump");
00029 
00030   ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
00031   ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("\n")));
00032   ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
00033 #endif /* ACE_HAS_DUMP */
00034 }
00035 
00036 template <class MUTEX>
00037 ACE_Thread_Condition<MUTEX>::ACE_Thread_Condition (MUTEX &m,
00038                                                    const ACE_TCHAR *name,
00039                                                    void *arg)
00040   : ACE_Condition<MUTEX> (m, USYNC_THREAD, name, arg)
00041 {
00042 // ACE_TRACE ("ACE_Thread_Condition<MUTEX>::ACE_Thread_Condition");
00043 }
00044 
00045 template <class MUTEX> void
00046 ACE_Thread_Condition<MUTEX>::dump (void) const
00047 {
00048 #if defined (ACE_HAS_DUMP)
00049 // ACE_TRACE ("ACE_Thread_Condition<MUTEX>::dump");
00050 
00051   ACE_Condition<MUTEX>::dump ();
00052 #endif /* ACE_HAS_DUMP */
00053 }
00054 
00055 template <class MUTEX>
00056 ACE_Condition<MUTEX>::ACE_Condition (MUTEX &m,
00057                                      int type,
00058                                      const ACE_TCHAR *name,
00059                                      void *arg)
00060   :
00061     mutex_ (m)
00062 {
00063   // ACE_TRACE ("ACE_Condition<MUTEX>::ACE_Condition");
00064 
00065   if (ACE_OS::cond_init (&this->cond_,
00066                          (short) type,
00067                          name,
00068                          arg) != 0)
00069     ACE_ERROR ((LM_ERROR,
00070                 ACE_LIB_TEXT ("%p\n"),
00071                 ACE_LIB_TEXT ("ACE_Condition::ACE_Condition")));
00072 }
00073 
00074 template <class MUTEX>
00075 ACE_Condition<MUTEX>::~ACE_Condition (void)
00076 {
00077   // ACE_TRACE ("ACE_Condition<MUTEX>::~ACE_Condition");
00078 
00079   if (this->remove () == -1)
00080     ACE_ERROR ((LM_ERROR,
00081                 ACE_LIB_TEXT ("%p\n"),
00082                 ACE_LIB_TEXT ("ACE_Condition::~ACE_Condition")));
00083 }
00084 
00085 template <class MUTEX> int
00086 ACE_Condition<MUTEX>::wait (void)
00087 {
00088   // ACE_TRACE ("ACE_Condition<MUTEX>::wait");
00089   return ACE_OS::cond_wait (&this->cond_,
00090                             &this->mutex_.lock_);
00091 }
00092 
00093 template <class MUTEX> int
00094 ACE_Condition<MUTEX>::wait (MUTEX &mutex,
00095                             const ACE_Time_Value *abstime)
00096 {
00097 // ACE_TRACE ("ACE_Condition<MUTEX>::wait");
00098   if (abstime == 0)
00099     return this->wait ();
00100   else
00101     {
00102       return ACE_OS::cond_timedwait (&this->cond_,
00103                                      &mutex.lock_,
00104                                      (ACE_Time_Value *) abstime);
00105     }
00106 }
00107 
00108 // Peform an "alertable" timed wait.  If the argument ABSTIME == 0
00109 // then we do a regular cond_wait(), else we do a timed wait for up to
00110 // ABSTIME using the Solaris cond_timedwait() function.
00111 
00112 template <class MUTEX> int
00113 ACE_Condition<MUTEX>::wait (const ACE_Time_Value *abstime)
00114 {
00115 // ACE_TRACE ("ACE_Condition<MUTEX>::wait");
00116   return this->wait (this->mutex_, abstime);
00117 }
00118 
00119 ACE_END_VERSIONED_NAMESPACE_DECL
00120 
00121 #endif /* ACE_HAS_THREADS */
00122 
00123 #endif /* ACE_CONDITION_T_CPP */

Generated on Thu Nov 9 09:41:48 2006 for ACE by doxygen 1.3.6