]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/semaphore.h
Refactor Mutex with pimpl
[libs/core.git] / source / core / semaphore.h
index e6c09c54437e57ed3ae0cf8903a30c920c976760..3f2cc974a455855c35246f7abc10d12d1993e709 100644 (file)
@@ -9,7 +9,6 @@ Distributed under the LGPL
 #define MSP_CORE_SEMAPHORE_H_
 
 #include "mutex.h"
-#include "types.h"
 #include "../time/timedelta.h"
 
 namespace Msp {
@@ -17,39 +16,19 @@ namespace Msp {
 class Semaphore
 {
 private:
-       Mutex *mutex;
-       bool  own_mutex;
-       SemaphoreHandle sem;
-#ifdef WIN32
-       unsigned count;
-#endif
+       struct Private;
+
+       Private *priv;
 
 public:
-       Semaphore();
-       Semaphore(Mutex &);
-private:
-       void init();
-public:
+       Semaphore(unsigned);
        ~Semaphore();
 
-       int   signal();
-       int   broadcast();
-       int   wait();
-       int   wait(const Time::TimeDelta &);
-       Mutex &get_mutex() { return *mutex; }
+       void signal();
+       void wait();
+       bool wait(const Time::TimeDelta &);
 };
 
-#ifndef WIN32
-inline int Semaphore::signal()
-{ return pthread_cond_signal(&sem); }
-
-inline int Semaphore::broadcast()
-{ return pthread_cond_broadcast(&sem); }
-
-inline int Semaphore::wait()
-{ return pthread_cond_wait(&sem, &mutex->mutex); }
-#endif
-
 }
 
 #endif