00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __ippServerQueues_H
00011 #define __ippServerQueues_H
00012
00013 #include "ippdme/ippdme.h"
00014
00015 #include "ippdme/Response/ippResponse.h"
00016
00017
00018 #include <queue>
00019
00020
00021 class IPPDME_EXT_CLASS ippServerQueues
00022 {
00023 private:
00024
00025 std::vector<int> _tagList;
00026 std::queue<std::string> _fastQueue;
00027 std::queue<std::string> _slowQueue;
00028 std::queue<std::string> _responseQueue;
00029
00030 public:
00031
00032 ippServerQueues();
00033
00034 virtual ~ippServerQueues();
00035
00039 void addTag(int tag_num);
00040
00044 void delTag(int tag_num);
00045
00049 bool tagInList(int tag_num) const;
00050
00051
00052
00053 void EnqueueEvent(const char * a_string);
00054
00055
00056 void EnqueueCommand(const char * a_string);
00057
00058
00059 void EnqueueResponse(const char * a_string);
00060
00061
00062 std::string DequeueEvent();
00063
00064
00065 std::string DequeueCommand();
00066
00067
00068 std::string DequeueResponse();
00069
00070
00071 bool EventQueueHasData()const { return !_fastQueue.empty(); }
00072 bool CommandQueueHasData()const { return !_slowQueue.empty(); }
00073 bool ResponseQueueHasData()const { return !_responseQueue.empty(); }
00074
00075
00076
00077 void ClearAllQueues();
00078 private:
00079 ippServerQueues(const ippServerQueues&);
00080 void operator=(const ippServerQueues&);
00081 };
00082
00083 #endif