summaryrefslogtreecommitdiff
path: root/cpp/include/qpid/messaging/Address.h
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2009-11-11 13:15:44 +0000
committerGordon Sim <gsim@apache.org>2009-11-11 13:15:44 +0000
commit856e5e92e6ad376cdbe3c8c2b8414415a17e579c (patch)
tree4b60cb6515225326ac1c60c04ef42765ccd3aa5c /cpp/include/qpid/messaging/Address.h
parent36c30decd36c54d5d361cfa64818d10527960b85 (diff)
downloadqpid-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.h62
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);