summaryrefslogtreecommitdiff
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
commitd98a30613db0a1aad03706b54c66d73fe21df876 (patch)
treee2adaa439ae1956453ca4d0652c8b2b5626a75c1
parent9ebaf89fcaff1bf2f061e514cba4de0ee4110349 (diff)
downloadqpid-python-d98a30613db0a1aad03706b54c66d73fe21df876.tar.gz
QPID-2427: Align browsing option with approach used in python client
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@918574 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp15
-rw-r--r--qpid/cpp/src/tests/MessagingSessionTests.cpp4
2 files changed, 16 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp b/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
index f81086db99..56499bb458 100644
--- a/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
+++ b/qpid/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
diff --git a/qpid/cpp/src/tests/MessagingSessionTests.cpp b/qpid/cpp/src/tests/MessagingSessionTests.cpp
index 98b92e809c..9e6cd59feb 100644
--- a/qpid/cpp/src/tests/MessagingSessionTests.cpp
+++ b/qpid/cpp/src/tests/MessagingSessionTests.cpp
@@ -525,9 +525,9 @@ QPID_AUTO_TEST_CASE(testBrowse)
QueueFixture fix;
Sender sender = fix.session.createSender(fix.queue);
send(sender, 10);
- Receiver browser1 = fix.session.createReceiver(fix.queue + "; {browse:true}");
+ Receiver browser1 = fix.session.createReceiver(fix.queue + "; {mode:browse}");
receive(browser1, 10);
- Receiver browser2 = fix.session.createReceiver(fix.queue + "; {browse:true}");
+ Receiver browser2 = fix.session.createReceiver(fix.queue + "; {mode:browse}");
receive(browser2, 10);
Receiver consumer = fix.session.createReceiver(fix.queue);
receive(consumer, 10);