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 ARMUTEX_H
00028 #define ARMUTEX_H
00029
00030 #ifndef WIN32
00031 #include <pthread.h>
00032 #endif
00033 #include <string>
00034 #include "ariaTypedefs.h"
00035
00036
00038
00046 class ArMutex
00047 {
00048 public:
00049
00050 #ifdef WIN32
00051 typedef HANDLE MutexType;
00052 #else
00053 typedef pthread_mutex_t MutexType;
00054 #endif
00055
00056 typedef enum {
00057 STATUS_FAILED_INIT=1,
00058 STATUS_FAILED,
00059 STATUS_ALREADY_LOCKED
00060 } Status;
00061
00063 ArMutex();
00065 virtual ~ArMutex();
00066
00068 virtual int lock();
00070 virtual int tryLock();
00072 virtual int unlock();
00074 virtual const char * getError(int messageNumber) const;
00076 void setLog(bool log) { myLog = log; }
00078 void setLogName(const char *logName) { myLogName = logName; }
00080 virtual MutexType & getMutex() {return(myMutex);}
00081
00082 protected:
00083
00084 bool myFailedInit;
00085 MutexType myMutex;
00086 ArStrMap myStrMap;
00087 bool myLog;
00088 std::string myLogName;
00089 };
00090
00091
00092 #endif // ARMUTEX_H