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
commit14d72c42e2e81c208ac30fe4e3a387aa4604db21 (patch)
tree5bcabbdc3090ed49b18742bfd166c83189811546 /cpp/src/qpid
parentab20a147c48880d49e265be73f3f986585f50061 (diff)
downloadqpid-python-14d72c42e2e81c208ac30fe4e3a387aa4604db21.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