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 #include <iosfwd>
00026 #include "qpid/CommonImportExport.h"
00027
00028 namespace qpid {
00029 namespace framing {
00030
00031 class Buffer;
00032
00036 class SequenceNumber
00037 {
00038 int32_t value;
00039
00040 public:
00041 QPID_COMMON_EXTERN SequenceNumber();
00042 QPID_COMMON_EXTERN SequenceNumber(uint32_t v);
00043
00044 QPID_COMMON_EXTERN SequenceNumber& operator++();
00045 QPID_COMMON_EXTERN const SequenceNumber operator++(int);
00046 QPID_COMMON_EXTERN SequenceNumber& operator--();
00047 QPID_COMMON_EXTERN bool operator==(const SequenceNumber& other) const;
00048 QPID_COMMON_EXTERN bool operator!=(const SequenceNumber& other) const;
00049 QPID_COMMON_EXTERN bool operator<(const SequenceNumber& other) const;
00050 QPID_COMMON_EXTERN bool operator>(const SequenceNumber& other) const;
00051 QPID_COMMON_EXTERN bool operator<=(const SequenceNumber& other) const;
00052 QPID_COMMON_EXTERN bool operator>=(const SequenceNumber& other) const;
00053 uint32_t getValue() const { return (uint32_t) value; }
00054 operator uint32_t() const { return (uint32_t) value; }
00055
00056 QPID_COMMON_EXTERN friend int32_t operator-(const SequenceNumber& a, const SequenceNumber& b);
00057
00058 void encode(Buffer& buffer) const;
00059 void decode(Buffer& buffer);
00060 uint32_t encodedSize() const;
00061
00062 template <class S> void serialize(S& s) { s(value); }
00063 };
00064
00065 struct Window
00066 {
00067 SequenceNumber hwm;
00068 SequenceNumber lwm;
00069 };
00070
00071 QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream& o, const SequenceNumber& n);
00072
00073 }}
00074
00075
00076 #endif