00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _QueuePolicy_
00022 #define _QueuePolicy_
00023
00024 #include "qpid/framing/FieldTable.h"
00025
00026 namespace qpid {
00027 namespace broker {
00028 class QueuePolicy
00029 {
00030 static const std::string maxCountKey;
00031 static const std::string maxSizeKey;
00032
00033 const uint32_t maxCount;
00034 const uint64_t maxSize;
00035 uint32_t count;
00036 uint64_t size;
00037
00038 static int getInt(const qpid::framing::FieldTable& settings, const std::string& key, int defaultValue);
00039
00040 public:
00041 QueuePolicy(uint32_t maxCount, uint64_t maxSize);
00042 QueuePolicy(const qpid::framing::FieldTable& settings);
00043 void enqueued(uint64_t size);
00044 void dequeued(uint64_t size);
00045 void update(qpid::framing::FieldTable& settings);
00046 bool limitExceeded();
00047 uint32_t getMaxCount() const { return maxCount; }
00048 uint64_t getMaxSize() const { return maxSize; }
00049 };
00050 }
00051 }
00052
00053
00054 #endif