diff options
author | Gordon Sim <gsim@apache.org> | 2010-03-03 17:06:20 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2010-03-03 17:06:20 +0000 |
commit | d98a30613db0a1aad03706b54c66d73fe21df876 (patch) | |
tree | e2adaa439ae1956453ca4d0652c8b2b5626a75c1 | |
parent | 9ebaf89fcaff1bf2f061e514cba4de0ee4110349 (diff) | |
download | qpid-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.cpp | 15 | ||||
-rw-r--r-- | qpid/cpp/src/tests/MessagingSessionTests.cpp | 4 |
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); |