summaryrefslogtreecommitdiff
path: root/cpp/src/qpid
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2010-03-03 17:06:20 +0000
committerGordon Sim <gsim@apache.org>2010-03-03 17:06:20 +0000
commit589def015a6567ecb7be9fe2af0ebec662cea56c (patch)
tree5bcabbdc3090ed49b18742bfd166c83189811546 /cpp/src/qpid
parentb61bc77ec5a871cf5319ac770a78466d51334f20 (diff)
downloadqpid-python-589def015a6567ecb7be9fe2af0ebec662cea56c.tar.gz
QPID-2427: Align browsing option with approach used in python client
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@918574 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid')
-rw-r--r--cpp/src/qpid/client/amqp0_10/AddressResolution.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp b/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
index f81086db99..56499bb458 100644
--- a/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
+++ b/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
@@ -65,7 +65,9 @@ const std::string EMPTY_STRING;
//option names
const std::string BROWSE("browse");
+const std::string CONSUME("consume");
const std::string EXCLUSIVE("exclusive");
+const std::string MODE("mode");
const std::string NO_LOCAL("no-local");
const std::string FILTER("filter");
const std::string RELIABILITY("reliability");
@@ -347,10 +349,21 @@ const Variant& getNestedOption(const Variant::Map& options, const std::vector<st
}
}
+bool isBrowse(const Address& address)
+{
+ const Variant& mode = address.getOption(MODE);
+ if (!mode.isVoid()) {
+ std::string value = mode.asString();
+ if (value == BROWSE) return true;
+ else if (value != CONSUME) throw InvalidAddress("Invalid mode");
+ }
+ return false;
+}
+
QueueSource::QueueSource(const Address& address) :
Queue(address),
acceptMode(AddressResolution::is_unreliable(address) ? ACCEPT_MODE_NONE : ACCEPT_MODE_EXPLICIT),
- acquireMode(address.getOption(BROWSE).asBool() ? ACQUIRE_MODE_NOT_ACQUIRED : ACQUIRE_MODE_PRE_ACQUIRED),
+ acquireMode(isBrowse(address) ? ACQUIRE_MODE_NOT_ACQUIRED : ACQUIRE_MODE_PRE_ACQUIRED),
exclusive(false)
{
//extract subscription arguments from address options