00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _framing_SequenceNumber_h
00022 #define _framing_SequenceNumber_h
00023
00024 #include "amqp_types.h"
00025
00026 namespace qpid {
00027 namespace framing {
00028
00029 class Buffer;
00030
00034 class SequenceNumber
00035 {
00036 int32_t value;
00037
00038 public:
00039 SequenceNumber();
00040 SequenceNumber(uint32_t v);
00041
00042 SequenceNumber& operator++();
00043 const SequenceNumber operator++(int);
00044 SequenceNumber& operator--();
00045 bool operator==(const SequenceNumber& other) const;
00046 bool operator!=(const SequenceNumber& other) const;
00047 bool operator<(const SequenceNumber& other) const;
00048 bool operator>(const SequenceNumber& other) const;
00049 bool operator<=(const SequenceNumber& other) const;
00050 bool operator>=(const SequenceNumber& other) const;
00051 uint32_t getValue() const { return (uint32_t) value; }
00052 operator uint32_t() const { return (uint32_t) value; }
00053
00054 friend int32_t operator-(const SequenceNumber& a, const SequenceNumber& b);
00055
00056 void encode(Buffer& buffer) const;
00057 void decode(Buffer& buffer);
00058 uint32_t size() const;
00059
00060 template <class S> void serialize(S& s) { s(value); }
00061 };
00062
00063 struct Window
00064 {
00065 SequenceNumber hwm;
00066 SequenceNumber lwm;
00067 };
00068
00069 }}
00070
00071
00072 #endif