Condition_T.cpp

Go to the documentation of this file.
00001 // $Id: Condition_T.cpp 81283 2008-04-09 01:28:18Z schmidt $
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_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_TEXT ("%p\n"),
00071                 ACE_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_TEXT ("%p\n"),
00082                 ACE_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 ACE_OS::cond_wait (&this->cond_,
00100                                 &mutex.lock_);
00101   else
00102     return ACE_OS::cond_timedwait (&this->cond_,
00103                                    &mutex.lock_,
00104                                    (ACE_Time_Value *) abstime);
00105 }
00106 
00107 // Peform an "alertable" timed wait.  If the argument ABSTIME == 0
00108 // then we do a regular cond_wait(), else we do a timed wait for up to
00109 // ABSTIME using the Solaris cond_timedwait() function.
00110 
00111 template <class MUTEX> int
00112 ACE_Condition<MUTEX>::wait (const ACE_Time_Value *abstime)
00113 {
00114 // ACE_TRACE ("ACE_Condition<MUTEX>::wait");
00115   return this->wait (this->mutex_, abstime);
00116 }
00117 
00118 ACE_END_VERSIONED_NAMESPACE_DECL
00119 
00120 #endif /* ACE_HAS_THREADS */
00121 
00122 #endif /* ACE_CONDITION_T_CPP */

Generated on Tue Feb 2 17:18:38 2010 for ACE by  doxygen 1.4.7