diff options
Diffstat (limited to 'cpp/include')
-rw-r--r-- | cpp/include/qpid/messaging/Address.h | 62 | ||||
-rw-r--r-- | cpp/include/qpid/messaging/Filter.h | 48 | ||||
-rw-r--r-- | cpp/include/qpid/messaging/Message.h | 2 | ||||
-rw-r--r-- | cpp/include/qpid/messaging/Session.h | 16 | ||||
-rw-r--r-- | cpp/include/qpid/messaging/Variant.h | 4 |
5 files changed, 58 insertions, 74 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); diff --git a/cpp/include/qpid/messaging/Filter.h b/cpp/include/qpid/messaging/Filter.h deleted file mode 100644 index 5cd844cf73..0000000000 --- a/cpp/include/qpid/messaging/Filter.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef QPID_MESSAGING_FILTER_H -#define QPID_MESSAGING_FILTER_H - -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -#include <string> -#include <vector> -#include "qpid/client/ClientImportExport.h" - -namespace qpid { -namespace client { -} - -namespace messaging { - -struct Filter -{ - std::string type; - std::vector<std::string> patterns; - - QPID_CLIENT_EXTERN Filter(std::string type, std::string pattern); - QPID_CLIENT_EXTERN Filter(std::string type, std::string pattern1, std::string pattern2); - - static QPID_CLIENT_EXTERN const std::string WILDCARD; - static QPID_CLIENT_EXTERN const std::string EXACT_MATCH; -}; - -}} // namespace qpid::messaging - -#endif /*!QPID_MESSAGING_FILTER_H*/ diff --git a/cpp/include/qpid/messaging/Message.h b/cpp/include/qpid/messaging/Message.h index 4477d5a2e9..1acccecad0 100644 --- a/cpp/include/qpid/messaging/Message.h +++ b/cpp/include/qpid/messaging/Message.h @@ -32,7 +32,7 @@ namespace client { namespace messaging { -struct Address; +class Address; class Codec; struct MessageImpl; diff --git a/cpp/include/qpid/messaging/Session.h b/cpp/include/qpid/messaging/Session.h index 979e27adae..4e3f950ef3 100644 --- a/cpp/include/qpid/messaging/Session.h +++ b/cpp/include/qpid/messaging/Session.h @@ -24,7 +24,7 @@ #include "qpid/client/ClientImportExport.h" #include "qpid/client/Handle.h" #include "qpid/sys/Time.h" -#include "Variant.h" +#include <string> namespace qpid { namespace client { @@ -35,8 +35,7 @@ template <class> class PrivateImplRef; namespace messaging { -struct Address; -struct Filter; +class Address; class Message; class MessageListener; class Sender; @@ -90,13 +89,10 @@ class Session : public qpid::client::Handle<SessionImpl> QPID_CLIENT_EXTERN Message fetch(qpid::sys::Duration timeout=qpid::sys::TIME_INFINITE); QPID_CLIENT_EXTERN bool dispatch(qpid::sys::Duration timeout=qpid::sys::TIME_INFINITE); - QPID_CLIENT_EXTERN Sender createSender(const Address& address, const VariantMap& options = VariantMap()); - QPID_CLIENT_EXTERN Sender createSender(const std::string& address, const VariantMap& options = VariantMap()); - - QPID_CLIENT_EXTERN Receiver createReceiver(const Address& address, const VariantMap& options = VariantMap()); - QPID_CLIENT_EXTERN Receiver createReceiver(const Address& address, const Filter& filter, const VariantMap& options = VariantMap()); - QPID_CLIENT_EXTERN Receiver createReceiver(const std::string& address, const VariantMap& options = VariantMap()); - QPID_CLIENT_EXTERN Receiver createReceiver(const std::string& address, const Filter& filter, const VariantMap& options = VariantMap()); + QPID_CLIENT_EXTERN Sender createSender(const Address& address); + QPID_CLIENT_EXTERN Sender createSender(const std::string& address); + QPID_CLIENT_EXTERN Receiver createReceiver(const Address& address); + QPID_CLIENT_EXTERN Receiver createReceiver(const std::string& address); QPID_CLIENT_EXTERN Address createTempQueue(const std::string& baseName = std::string()); private: diff --git a/cpp/include/qpid/messaging/Variant.h b/cpp/include/qpid/messaging/Variant.h index 1e51914794..c63138178b 100644 --- a/cpp/include/qpid/messaging/Variant.h +++ b/cpp/include/qpid/messaging/Variant.h @@ -30,9 +30,6 @@ #include "qpid/client/ClientImportExport.h" namespace qpid { -namespace client { -} - namespace messaging { /** @@ -93,6 +90,7 @@ class Variant QPID_CLIENT_EXTERN ~Variant(); QPID_CLIENT_EXTERN VariantType getType() const; + QPID_CLIENT_EXTERN bool isVoid() const; QPID_CLIENT_EXTERN Variant& operator=(bool); QPID_CLIENT_EXTERN Variant& operator=(uint8_t); |