diff options
Diffstat (limited to 'daemon/Fifo.h')
-rw-r--r-- | daemon/Fifo.h | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/daemon/Fifo.h b/daemon/Fifo.h index d46e1af..ada42b9 100644 --- a/daemon/Fifo.h +++ b/daemon/Fifo.h @@ -9,27 +9,36 @@ #ifndef __FIFO_H__ #define __FIFO_H__ +#ifdef WIN32 +#include <windows.h> +#define sem_t HANDLE +#define sem_init(sem, pshared, value) ((*(sem) = CreateSemaphore(NULL, value, INFINITE, NULL)) == NULL) +#define sem_wait(sem) WaitForSingleObject(*(sem), INFINITE) +#define sem_post(sem) ReleaseSemaphore(*(sem), 1, NULL) +#define sem_destroy(sem) CloseHandle(*(sem)) +#else #include <semaphore.h> +#endif class Fifo { public: - Fifo(int singleBufferSize, int totalBufferSize, sem_t* readerSem); - ~Fifo(); - int numBytesFilled() const; - bool isEmpty() const; - bool isFull() const; - bool willFill(int additional) const; - char* start() const; - char* write(int length); - void release(); - char* read(int *const length); + Fifo(int singleBufferSize, int totalBufferSize, sem_t* readerSem); + ~Fifo(); + int numBytesFilled() const; + bool isEmpty() const; + bool isFull() const; + bool willFill(int additional) const; + char* start() const; + char* write(int length); + void release(); + char* read(int *const length); private: - int mSingleBufferSize, mWrite, mRead, mReadCommit, mRaggedEnd, mWrapThreshold; - sem_t mWaitForSpaceSem; - sem_t* mReaderSem; - char* mBuffer; - bool mEnd; + int mSingleBufferSize, mWrite, mRead, mReadCommit, mRaggedEnd, mWrapThreshold; + sem_t mWaitForSpaceSem; + sem_t* mReaderSem; + char* mBuffer; + bool mEnd; }; #endif //__FIFO_H__ |