diff options
author | Gordon Sim <gsim@apache.org> | 2009-11-11 13:15:44 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2009-11-11 13:15:44 +0000 |
commit | 856e5e92e6ad376cdbe3c8c2b8414415a17e579c (patch) | |
tree | 4b60cb6515225326ac1c60c04ef42765ccd3aa5c /cpp/include/qpid/messaging/Address.h | |
parent | 36c30decd36c54d5d361cfa64818d10527960b85 (diff) | |
download | qpid-python-856e5e92e6ad376cdbe3c8c2b8414415a17e579c.tar.gz |
Added support for address parsing, create/assert/delete policies
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@834869 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/include/qpid/messaging/Address.h')
-rw-r--r-- | cpp/include/qpid/messaging/Address.h | 62 |
1 files changed, 50 insertions, 12 deletions
diff --git a/cpp/include/qpid/messaging/Address.h b/cpp/include/qpid/messaging/Address.h index e66c52f4c2..f232af5d56 100644 --- a/cpp/include/qpid/messaging/Address.h +++ b/cpp/include/qpid/messaging/Address.h @@ -22,33 +22,71 @@ * */ #include <string> +#include "qpid/Exception.h" +#include "qpid/messaging/Variant.h" #include "qpid/client/ClientImportExport.h" #include <ostream> namespace qpid { -namespace client { -} - namespace messaging { +struct InvalidAddress : public qpid::Exception +{ + InvalidAddress(const std::string& msg); +}; + +struct MalformedAddress : public qpid::Exception +{ + MalformedAddress(const std::string& msg); +}; + +class AddressImpl; + /** * Represents an address to which messages can be sent and from which * messages can be received. Often a simple name is sufficient for - * this. However this struct allows the type of address to be - * specified allowing more sophisticated treatment if necessary. + * this, however this can be augmented with a subject pattern and + * options. + * + * All parts of an address can be specified in a string of the + * following form: + * + * <address> [ / <subject> ] [ { <key> : <value> , ... } ] + * + * Here the <address> is a simple name for the addressed entity and + * <subject> is a subject or subject pattern for messages sent to or + * received from this address. The options are specified as a series + * of key value pairs enclosed in curly brackets (denoting a map). */ -struct Address +class Address { - std::string value; - std::string type; - + public: QPID_CLIENT_EXTERN Address(); QPID_CLIENT_EXTERN Address(const std::string& address); - QPID_CLIENT_EXTERN Address(const std::string& address, const std::string& type); - QPID_CLIENT_EXTERN operator const std::string&() const; - QPID_CLIENT_EXTERN const std::string& toStr() const; + QPID_CLIENT_EXTERN Address(const std::string& name, const std::string& subject, + const Variant::Map& options, const std::string& type = ""); + QPID_CLIENT_EXTERN Address(const Address& address); + QPID_CLIENT_EXTERN ~Address(); + Address& operator=(const Address&); + QPID_CLIENT_EXTERN const std::string& getName() const; + QPID_CLIENT_EXTERN void setName(const std::string&); + QPID_CLIENT_EXTERN const std::string& getSubject() const; + QPID_CLIENT_EXTERN void setSubject(const std::string&); + QPID_CLIENT_EXTERN bool hasSubject() const; + QPID_CLIENT_EXTERN const Variant::Map& getOptions() const; + QPID_CLIENT_EXTERN Variant::Map& getOptions(); + QPID_CLIENT_EXTERN void setOptions(const Variant::Map&); + + QPID_CLIENT_EXTERN std::string getType() const; + QPID_CLIENT_EXTERN void setType(const std::string&); + + QPID_CLIENT_EXTERN const Variant& getOption(const std::string& key) const; + + QPID_CLIENT_EXTERN std::string toStr() const; QPID_CLIENT_EXTERN operator bool() const; QPID_CLIENT_EXTERN bool operator !() const; + private: + AddressImpl* impl; }; QPID_CLIENT_EXTERN std::ostream& operator<<(std::ostream& out, const Address& address); |