00001 #ifndef QPID_FRAMING_FRAGMENTPROPERTIES_H
00002 #define QPID_FRAMING_FRAGMENTPROPERTIES_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00028
00029
00030
00031 #include <ostream>
00032 #include "qpid/framing/amqp_types_full.h"
00033
00034 namespace qpid {
00035 namespace framing {
00036
00037 class FragmentProperties {
00038 uint64_t fragmentSize;
00039 uint16_t flags;
00040 public:
00041 static const uint16_t TYPE = 1026;
00042 FragmentProperties(
00043 bool _first,
00044 bool _last,
00045 uint64_t _fragmentSize) :
00046 fragmentSize(_fragmentSize),
00047 flags(0){
00048 setFirst(_first);
00049 setLast(_last);
00050 flags |= (1 << 10);
00051 }
00052 FragmentProperties() : fragmentSize(0), flags(0) {}
00053
00054 void setFirst(bool _first);
00055 bool getFirst() const;
00056 void setLast(bool _last);
00057 bool getLast() const;
00058 void setFragmentSize(uint64_t _fragmentSize);
00059 uint64_t getFragmentSize() const;
00060 bool hasFragmentSize() const;
00061 void clearFragmentSizeFlag();
00062 friend std::ostream& operator<<(std::ostream&, const FragmentProperties&);
00063 void encode(Buffer&) const;
00064 void decode(Buffer&, uint32_t=0);
00065 void encodeStructBody(Buffer&) const;
00066 void decodeStructBody(Buffer&, uint32_t=0);
00067 uint32_t size() const;
00068 uint32_t bodySize() const;
00069 void print(std::ostream& out) const;
00070 };
00071
00072 }}
00073 #endif