diff options
author | Gordon Sim <gsim@apache.org> | 2012-11-16 21:32:11 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2012-11-16 21:32:11 +0000 |
commit | c2e7cfde679e83a51598fc65ebe5b45299d59a94 (patch) | |
tree | eb35a55e3978d28f0bc73bb10db01dcb9c19ff27 /cpp/src/qpid/messaging/amqp/ReceiverContext.cpp | |
parent | 969e6bcd810f82dec73333d5bf4df4d96b68adc5 (diff) | |
download | qpid-python-c2e7cfde679e83a51598fc65ebe5b45299d59a94.tar.gz |
QPID-4368: Small improvements to setting and checking filter descriptors
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1410576 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/messaging/amqp/ReceiverContext.cpp')
-rw-r--r-- | cpp/src/qpid/messaging/amqp/ReceiverContext.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp b/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp index 33ddabfc75..0a8f139839 100644 --- a/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp +++ b/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp @@ -21,6 +21,7 @@ #include "ReceiverContext.h" #include "qpid/messaging/Duration.h" #include "qpid/messaging/Message.h" +#include "qpid/amqp/descriptors.h" extern "C" { #include <proton/engine.h> } @@ -94,6 +95,15 @@ pn_bytes_t convert(const std::string& s) result.size = s.size(); return result; } +bool hasWildcards(const std::string& key) +{ + return key.find('*') != std::string::npos || key.find('#') != std::string::npos; +} + +uint64_t getFilterDescriptor(const std::string& key) +{ + return hasWildcards(key) ? qpid::amqp::filters::LEGACY_TOPIC_FILTER_CODE : qpid::amqp::filters::LEGACY_DIRECT_FILTER_CODE; +} } void ReceiverContext::configure() const @@ -110,7 +120,7 @@ void ReceiverContext::configure(pn_terminus_t* source) const pn_data_put_symbol(filter, convert("subject")); pn_data_put_described(filter); pn_data_enter(filter); - pn_data_put_ulong(filter, 0x0000468C00000001/*LEGACY_TOPIC_FILTER*/); + pn_data_put_ulong(filter, getFilterDescriptor(address.getSubject())); pn_data_put_string(filter, convert(address.getSubject())); pn_data_exit(filter); pn_data_exit(filter); |