Go to the documentation of this file.00001 #ifndef QPID_FRAMING_REPLYTO_H
00002 #define QPID_FRAMING_REPLYTO_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 ReplyTo {
00040 std::string exchange;
00041 std::string routingKey;
00042 uint16_t flags;
00043 public:
00044 ReplyTo(
00045 const std::string& _exchange,
00046 const std::string& _routingKey) :
00047 exchange(_exchange),
00048 routingKey(_routingKey),
00049 flags(0){
00050 flags |= (1 << 8);
00051 flags |= (1 << 9);
00052 if (exchange.size() >= 256) throw IllegalArgumentException("Value for exchange is too large");
00053 if (routingKey.size() >= 256) throw IllegalArgumentException("Value for routingKey is too large");
00054 }
00055 ReplyTo() : flags(0) {}
00056
00057 QPID_COMMON_EXTERN void setExchange(const std::string& _exchange);
00058 QPID_COMMON_EXTERN const std::string& getExchange() const;
00059 QPID_COMMON_EXTERN bool hasExchange() const;
00060 QPID_COMMON_EXTERN void clearExchangeFlag();
00061 QPID_COMMON_EXTERN void setRoutingKey(const std::string& _routingKey);
00062 QPID_COMMON_EXTERN const std::string& getRoutingKey() const;
00063 QPID_COMMON_EXTERN bool hasRoutingKey() const;
00064 QPID_COMMON_EXTERN void clearRoutingKeyFlag();
00065 QPID_COMMON_EXTERN friend std::ostream& operator<<(std::ostream&, const ReplyTo&);
00066 QPID_COMMON_EXTERN void encode(Buffer&) const;
00067 QPID_COMMON_EXTERN void decode(Buffer&, uint32_t=0);
00068 QPID_COMMON_EXTERN void encodeStructBody(Buffer&) const;
00069 QPID_COMMON_EXTERN void decodeStructBody(Buffer&, uint32_t=0);
00070 QPID_COMMON_EXTERN uint32_t encodedSize() const;
00071 QPID_COMMON_EXTERN uint32_t bodySize() const;
00072 QPID_COMMON_EXTERN void print(std::ostream& out) const;
00073 };
00074
00075 }}
00076 #endif