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
00027 #ifndef ARCONDITION_H
00028 #define ARCONDITION_H
00029
00030
00031 #ifndef WIN32
00032 #include <pthread.h>
00033 #include "ArMutex.h"
00034 #endif
00035 #include "ariaTypedefs.h"
00036
00037
00039 class ArCondition
00040 {
00041 public:
00042
00043 typedef enum {
00044 STATUS_FAILED=1,
00045 STATUS_FAILED_DESTROY,
00046 STATUS_FAILED_INIT,
00047 STATUS_WAIT_TIMEDOUT,
00048 STATUS_WAIT_INTR,
00049 STATUS_MUTEX_FAILED_INIT,
00050 STATUS_MUTEX_FAILED
00051 };
00052
00053 #ifdef WIN32
00054 typedef HANDLE CondType;
00055 #else
00056 typedef pthread_cond_t CondType;
00057 #endif
00058
00060 ArCondition();
00062 virtual ~ArCondition();
00063
00065 int signal();
00067 int broadcast();
00068 #ifndef SWIG
00069
00070 int wait();
00071 #endif
00072
00073 int timedWait(unsigned int msecs);
00075 const char *getError(int messageNumber) const;
00076
00077 protected:
00078
00079 static ArStrMap ourStrMap;
00080
00081 bool myFailedInit;
00082 CondType myCond;
00083 #ifdef WIN32
00084 int myCount;
00085 #else
00086 ArMutex myMutex;
00087 #endif
00088 };
00089
00090
00091 #endif // ARCONDITION_H