00001 #ifndef QPID_FRAMING_XID_H
00002 #define QPID_FRAMING_XID_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 Xid {
00038 uint32_t format;
00039 string globalId;
00040 string branchId;
00041 uint16_t flags;
00042 public:
00043 static const uint16_t TYPE = 1540;
00044 Xid(
00045 uint32_t _format,
00046 const string& _globalId,
00047 const string& _branchId) :
00048 format(_format),
00049 globalId(_globalId),
00050 branchId(_branchId),
00051 flags(0){
00052 flags |= (1 << 8);
00053 flags |= (1 << 9);
00054 flags |= (1 << 10);
00055 }
00056 Xid() : format(0), flags(0) {}
00057
00058 void setFormat(uint32_t _format);
00059 uint32_t getFormat() const;
00060 bool hasFormat() const;
00061 void clearFormatFlag();
00062 void setGlobalId(const string& _globalId);
00063 const string& getGlobalId() const;
00064 bool hasGlobalId() const;
00065 void clearGlobalIdFlag();
00066 void setBranchId(const string& _branchId);
00067 const string& getBranchId() const;
00068 bool hasBranchId() const;
00069 void clearBranchIdFlag();
00070 friend std::ostream& operator<<(std::ostream&, const Xid&);
00071 void encode(Buffer&) const;
00072 void decode(Buffer&, uint32_t=0);
00073 void encodeStructBody(Buffer&) const;
00074 void decodeStructBody(Buffer&, uint32_t=0);
00075 uint32_t size() const;
00076 uint32_t bodySize() const;
00077 void print(std::ostream& out) const;
00078 };
00079
00080 }}
00081 #endif