00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ARCONDITION_H
00027 #define ARCONDITION_H
00028
00029
00030 #ifndef WIN32
00031 #include <pthread.h>
00032 #include "ArMutex.h"
00033 #endif
00034 #include "ariaTypedefs.h"
00035
00036
00038 class ArCondition
00039 {
00040 public:
00041
00042 typedef enum {
00043 STATUS_FAILED=1,
00044 STATUS_FAILED_DESTROY,
00045 STATUS_FAILED_INIT,
00046 STATUS_WAIT_TIMEDOUT,
00047 STATUS_WAIT_INTR,
00048 STATUS_MUTEX_FAILED_INIT,
00049 STATUS_MUTEX_FAILED
00050 };
00051
00053 #ifdef WIN32
00054 typedef HANDLE CondType;
00055 #else
00056 typedef pthread_cond_t CondType;
00057 #endif
00058
00060 AREXPORT ArCondition();
00062 AREXPORT virtual ~ArCondition();
00063
00065 AREXPORT int signal();
00067 AREXPORT int broadcast();
00069 AREXPORT int wait();
00071 AREXPORT int timedWait(unsigned int msecs);
00073 AREXPORT const char *getError(int messageNumber) const;
00074
00075 protected:
00076
00077 static ArStrMap ourStrMap;
00078
00079 bool myFailedInit;
00080 CondType myCond;
00081 #ifdef WIN32
00082 int myCount;
00083 #else
00084 ArMutex myMutex;
00085 #endif
00086 };
00087
00088
00089 #endif // ARCONDITION_H