00001
00002
00003
00004
00005
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