ResponseMessageQueue.h

00001 /*-----------------------------------------------------------------------------
00002  * ResponseMessageQueue declaration
00003  * Ionetrics 2006
00004  * John Williams
00005  * ResponseMessageQueue.h
00006  *---------------------------------------------------------------------------*/
00007 
00008 #ifndef RESPONSEMESSAGEQUEUE_H
00009 #define RESPONSEMESSAGEQUEUE_H
00010 
00011 //-----------------------------------------------------------------------------
00012 
00013 #include <pthread.h>
00014 #include <queue>
00015 
00016 #include "AnnotatorCommApi.h"
00017 #include "ResponseMessage.h"
00018 
00019 using namespace std;
00020 
00021 //-----------------------------------------------------------------------------
00022 
00023 namespace annotatorcomm
00024 {
00025 
00029 class ANNCOMM_API ResponseMessageQueue
00030 {
00031 private:
00035         static const int TIMEOUT;
00036 
00037 public:
00041         ResponseMessageQueue();
00042         
00046         virtual ~ResponseMessageQueue();
00047         
00053         void close();
00054         
00063         ResponseMessage get() throw(IOException);
00064         
00070         void put(ResponseMessage & msg);
00071 
00072 private:
00076         queue<ResponseMessage> messages;
00077         
00081         volatile bool isOpen;
00082         
00086         pthread_mutex_t mutex;
00087         
00092         pthread_cond_t cond;
00093 };
00094 
00095 }
00096 
00097 //-----------------------------------------------------------------------------
00098 
00099 #endif /* RESPONSEMESSAGEQUEUE_H */

Generated on Tue Aug 1 11:14:11 2006 for libAnnotatorComm by  doxygen 1.4.7