Main Page   Namespace List   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

eventqueue.cpp

Go to the documentation of this file.
00001 
00013 #include "sysconfig.h"
00014 #include "eventqueue.h"
00015 #include "guard.h"
00016 
00025 #pragma argsused
00026 EventQueue::EventQueue(int num_threads) {
00027 //  mFree = CreateSemaphore(0, num_threads, num_threads, 0);
00028 //  mUsed = CreateSemaphore(0, 0, num_threads, 0);
00029   InitializeCriticalSection(&mMutex);
00030 //  if (mFree == FALSE || mUsed == FALSE)
00031 //    mOk = false;
00032 //  else
00033 //    mOk = true;
00034 }
00035 
00039 EventQueue::~EventQueue() {
00040   DeleteCriticalSection(&mMutex);
00041 //  if (mUsed != FALSE)
00042 //    CloseHandle(mUsed);
00043 //  if (mFree != FALSE)
00044 //    CloseHandle(mFree);
00045 }
00046 
00052 void EventQueue::Push(Event * event) {
00053 //  if (!mOk)
00054 //    return;
00055 //  WaitForSingleObject(mFree, INFINITE);
00056   {
00057     Guard g(mMutex);
00058     mQue.push(event);
00059   }  
00060 //  ReleaseSemaphore(mUsed, 1, 0);
00061 }
00062 
00068 Event* EventQueue::Pop() {
00069   Event * event = NULL;
00070 //  if (!mOk)
00071 //    return NULL;
00072 //  WaitForSingleObject(mUsed, INFINITE);
00073   {
00074     Guard g(mMutex);
00075     if (!mQue.empty()) {
00076       event = mQue.front();
00077       mQue.pop();
00078     }
00079   }
00080 //  ReleaseSemaphore(mFree, 1, 0);
00081   return event;
00082 }
00083 
00089 int EventQueue::Size() {
00090   Guard g(mMutex);
00091   return mQue.size();
00092 }
00093 
00099 bool EventQueue::IsOk() {
00100 //  return mOk;
00101   return true;
00102 }
00103 

Generated on Mon Mar 29 23:12:53 2004 for Paradigm by doxygen1.2.17