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 <iostream>
00025 #include "qpid/framing/FieldTable.h"
00026
00027 namespace qpid {
00028 namespace broker {
00029 class QueuePolicy
00030 {
00031 static const std::string maxCountKey;
00032 static const std::string maxSizeKey;
00033
00034 static uint64_t defaultMaxSize;
00035
00036 const uint32_t maxCount;
00037 const uint64_t maxSize;
00038 uint32_t count;
00039 uint64_t size;
00040
00041 static int getInt(const qpid::framing::FieldTable& settings, const std::string& key, int defaultValue);
00042
00043 public:
00044 QueuePolicy(uint32_t maxCount, uint64_t maxSize);
00045 QueuePolicy(const qpid::framing::FieldTable& settings);
00046 void enqueued(uint64_t size);
00047 void dequeued(uint64_t size);
00048 void update(qpid::framing::FieldTable& settings);
00049 bool limitExceeded();
00050 uint32_t getMaxCount() const { return maxCount; }
00051 uint64_t getMaxSize() const { return maxSize; }
00052
00053 static void setDefaultMaxSize(uint64_t);
00054 friend std::ostream& operator<<(std::ostream&, const QueuePolicy&);
00055 };
00056 }
00057 }
00058
00059
00060 #endif