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