00001 #ifndef QPID_CLIENT_BOUNDSCHECKING_H
00002 #define QPID_CLIENT_BOUNDSCHECKING_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "qpid/sys/Waitable.h"
00024
00025 namespace qpid{
00026 namespace client{
00027
00028 class Bounds
00029 {
00030 public:
00031 Bounds(size_t maxSize);
00032 bool expand(size_t, bool block);
00033 void reduce(size_t);
00034 size_t getCurrentSize();
00035 void setException(const sys::ExceptionHolder&);
00036
00037 private:
00038 friend std::ostream& operator<<(std::ostream&, const Bounds&);
00039 sys::Waitable lock;
00040 const size_t max;
00041 size_t current;
00042 };
00043
00044 std::ostream& operator<<(std::ostream&, const Bounds&);
00045
00046
00047 }}
00048
00049 #endif