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 #include "qpid/CommonImportExport.h"
00034
00035 namespace qpid {
00036 namespace framing {
00037
00038 class FragmentProperties {
00039 uint64_t fragmentSize;
00040 uint16_t flags;
00041 public:
00042 static const uint16_t TYPE = 1026;
00043 FragmentProperties(
00044 bool _first,
00045 bool _last,
00046 uint64_t _fragmentSize) :
00047 fragmentSize(_fragmentSize),
00048 flags(0){
00049 setFirst(_first);
00050 setLast(_last);
00051 flags |= (1 << 10);
00052 }
00053 FragmentProperties() : fragmentSize(0), flags(0) {}
00054
00055 QPID_COMMON_EXTERN void setFirst(bool _first);
00056 QPID_COMMON_EXTERN bool getFirst() const;
00057 QPID_COMMON_EXTERN void setLast(bool _last);
00058 QPID_COMMON_EXTERN bool getLast() const;
00059 QPID_COMMON_EXTERN void setFragmentSize(uint64_t _fragmentSize);
00060 QPID_COMMON_EXTERN uint64_t getFragmentSize() const;
00061 QPID_COMMON_EXTERN bool hasFragmentSize() const;
00062 QPID_COMMON_EXTERN void clearFragmentSizeFlag();
00063 QPID_COMMON_EXTERN friend std::ostream& operator<<(std::ostream&, const FragmentProperties&);
00064 QPID_COMMON_EXTERN void encode(Buffer&) const;
00065 QPID_COMMON_EXTERN void decode(Buffer&, uint32_t=0);
00066 QPID_COMMON_EXTERN void encodeStructBody(Buffer&) const;
00067 QPID_COMMON_EXTERN void decodeStructBody(Buffer&, uint32_t=0);
00068 QPID_COMMON_EXTERN uint32_t encodedSize() const;
00069 QPID_COMMON_EXTERN uint32_t bodySize() const;
00070 QPID_COMMON_EXTERN void print(std::ostream& out) const;
00071 };
00072
00073 }}
00074 #endif