00001 #ifndef QPID_FRAMING_EXCHANGEQUERYRESULT_H
00002 #define QPID_FRAMING_EXCHANGEQUERYRESULT_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/framing/reply_exceptions.h"
00034 #include "qpid/CommonImportExport.h"
00035
00036 namespace qpid {
00037 namespace framing {
00038
00039 class QPID_COMMON_CLASS_EXTERN ExchangeQueryResult {
00040 std::string type;
00041 FieldTable arguments;
00042 uint16_t flags;
00043 public:
00044 static const uint16_t TYPE = 1793;
00045 ExchangeQueryResult(
00046 const std::string& _type,
00047 bool _durable,
00048 bool _notFound,
00049 const FieldTable& _arguments) :
00050 type(_type),
00051 arguments(_arguments),
00052 flags(0){
00053 setDurable(_durable);
00054 setNotFound(_notFound);
00055 flags |= (1 << 8);
00056 flags |= (1 << 11);
00057 if (type.size() >= 256) throw IllegalArgumentException("Value for type is too large");
00058 }
00059 ExchangeQueryResult() : flags(0) {}
00060
00061 QPID_COMMON_EXTERN void setType(const std::string& _type);
00062 QPID_COMMON_EXTERN const std::string& getType() const;
00063 QPID_COMMON_EXTERN bool hasType() const;
00064 QPID_COMMON_EXTERN void clearTypeFlag();
00065 QPID_COMMON_EXTERN void setDurable(bool _durable);
00066 QPID_COMMON_EXTERN bool getDurable() const;
00067 QPID_COMMON_EXTERN void setNotFound(bool _notFound);
00068 QPID_COMMON_EXTERN bool getNotFound() const;
00069 QPID_COMMON_EXTERN void setArguments(const FieldTable& _arguments);
00070 QPID_COMMON_EXTERN const FieldTable& getArguments() const;
00071 QPID_COMMON_EXTERN FieldTable& getArguments();
00072 QPID_COMMON_EXTERN bool hasArguments() const;
00073 QPID_COMMON_EXTERN void clearArgumentsFlag();
00074 QPID_COMMON_EXTERN friend std::ostream& operator<<(std::ostream&, const ExchangeQueryResult&);
00075 QPID_COMMON_EXTERN void encode(Buffer&) const;
00076 QPID_COMMON_EXTERN void decode(Buffer&, uint32_t=0);
00077 QPID_COMMON_EXTERN void encodeStructBody(Buffer&) const;
00078 QPID_COMMON_EXTERN void decodeStructBody(Buffer&, uint32_t=0);
00079 QPID_COMMON_EXTERN uint32_t encodedSize() const;
00080 QPID_COMMON_EXTERN uint32_t bodySize() const;
00081 QPID_COMMON_EXTERN void print(std::ostream& out) const;
00082 };
00083
00084 }}
00085 #endif