You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2013/03/19 19:39:51 UTC

svn commit: r1458453 - in /qpid/trunk/qpid/cpp/src/qpid: amqp/descriptors.h broker/SemanticState.cpp broker/amqp/Filter.cpp client/amqp0_10/AddressResolution.cpp messaging/amqp/ReceiverContext.cpp

Author: astitcher
Date: Tue Mar 19 18:39:50 2013
New Revision: 1458453

URL: http://svn.apache.org/r1458453
Log:
QPID-4558: Change C++ Selector implementation to use registered values
- Selectors should now implement every language feature of the
  registered apache selector filter extension to the amqp 1.0 spec.
- In the addressing syntax use a link property called just "selector"
- For amqp 1.0 on the wire use the registered filter descriptor code
  for the selector.
- For amqp 0-10 on the wire use a subscription property of "x-apache-selector"
  for the selector.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/amqp/descriptors.h
    qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Filter.cpp
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/amqp/descriptors.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/amqp/descriptors.h?rev=1458453&r1=1458452&r2=1458453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/amqp/descriptors.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/amqp/descriptors.h Tue Mar 19 18:39:50 2013
@@ -78,10 +78,11 @@ const Descriptor SASL_OUTCOME(SASL_OUTCO
 namespace filters {
 const std::string LEGACY_DIRECT_FILTER_SYMBOL("apache.org:legacy-amqp-direct-binding:string");
 const std::string LEGACY_TOPIC_FILTER_SYMBOL("apache.org:legacy-amqp-topic-binding:string");
-const std::string QPID_SELECTOR_FILTER_SYMBOL("qpid.apache.org:selector-filter:string");
+const std::string SELECTOR_FILTER_SYMBOL("apache.org:selector-filter:string");
 
 const uint64_t LEGACY_DIRECT_FILTER_CODE(0x0000468C00000000ULL);
 const uint64_t LEGACY_TOPIC_FILTER_CODE(0x0000468C00000001ULL);
+const uint64_t SELECTOR_FILTER_CODE(0x0000468C00000004ULL);
 }
 
 }} // namespace qpid::amqp

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp?rev=1458453&r1=1458452&r2=1458453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp Tue Mar 19 18:39:50 2013
@@ -286,7 +286,7 @@ void SemanticState::record(const Deliver
 }
 
 const std::string QPID_SYNC_FREQUENCY("qpid.sync_frequency");
-const std::string QPID_SELECTOR("qpid.selector");
+const std::string APACHE_SELECTOR("x-apache-selector");
 
 SemanticStateConsumerImpl::SemanticStateConsumerImpl(SemanticState* _parent,
                                           const string& _name,
@@ -309,7 +309,7 @@ Consumer(_name, type),
     exclusive(_exclusive),
     resumeId(_resumeId),
     tag(_tag),
-    selector(returnSelector(_arguments.getAsString(QPID_SELECTOR))),
+    selector(returnSelector(_arguments.getAsString(APACHE_SELECTOR))),
     resumeTtl(_resumeTtl),
     arguments(_arguments),
     notifyEnabled(true),

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Filter.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Filter.cpp?rev=1458453&r1=1458452&r2=1458453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Filter.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Filter.cpp Tue Mar 19 18:39:50 2013
@@ -61,7 +61,7 @@ void Filter::onStringValue(const qpid::a
         if (descriptor->match(qpid::amqp::filters::LEGACY_TOPIC_FILTER_SYMBOL, qpid::amqp::filters::LEGACY_TOPIC_FILTER_CODE)
             || descriptor->match(qpid::amqp::filters::LEGACY_DIRECT_FILTER_SYMBOL, qpid::amqp::filters::LEGACY_DIRECT_FILTER_CODE)) {
             setSubjectFilter(filter);
-        } else if (descriptor->match(qpid::amqp::filters::QPID_SELECTOR_FILTER_SYMBOL, 0)) {
+        } else if (descriptor->match(qpid::amqp::filters::SELECTOR_FILTER_SYMBOL, qpid::amqp::filters::SELECTOR_FILTER_CODE)) {
             setSelectorFilter(filter);
         } else {
             QPID_LOG(notice, "Skipping unrecognised string filter with key " << filter.key << " and descriptor " << filter.descriptor);

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp?rev=1458453&r1=1458452&r2=1458453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp Tue Mar 19 18:39:50 2013
@@ -93,7 +93,8 @@ const std::string DURABLE("durable");
 const std::string X_DECLARE("x-declare");
 const std::string X_SUBSCRIBE("x-subscribe");
 const std::string X_BINDINGS("x-bindings");
-const std::string QPID_SELECTOR("qpid.selector");
+const std::string SELECTOR("selector");
+const std::string APACHE_SELECTOR("x-apache-selector");
 const std::string EXCHANGE("exchange");
 const std::string QUEUE("queue");
 const std::string KEY("key");
@@ -477,8 +478,8 @@ QueueSource::QueueSource(const Address& 
     //options)
     exclusive = Opt(address)/LINK/X_SUBSCRIBE/EXCLUSIVE;
     (Opt(address)/LINK/X_SUBSCRIBE/ARGUMENTS).collect(options);
-    std::string selector = Opt(address)/LINK/QPID_SELECTOR;
-    if (!selector.empty()) options.setString(QPID_SELECTOR, selector);
+    std::string selector = Opt(address)/LINK/SELECTOR;
+    if (!selector.empty()) options.setString(APACHE_SELECTOR, selector);
 }
 
 void QueueSource::subscribe(qpid::client::AsyncSession& session, const std::string& destination)
@@ -990,7 +991,7 @@ Verifier::Verifier()
     link[X_SUBSCRIBE] = true;
     link[X_DECLARE] = true;
     link[X_BINDINGS] = true;
-    link[QPID_SELECTOR] = true;
+    link[SELECTOR] = true;
     defined[LINK] = link;
 }
 void Verifier::verify(const Address& address) const

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp?rev=1458453&r1=1458452&r2=1458453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/ReceiverContext.cpp Tue Mar 19 18:39:50 2013
@@ -121,15 +121,15 @@ void ReceiverContext::configure(pn_termi
     }
 
     // Look specifically for qpid.selector link property and add a filter for it
-    qpid::types::Variant::Map::const_iterator i = helper.getLinkProperties().find("qpid.selector");
+    qpid::types::Variant::Map::const_iterator i = helper.getLinkProperties().find("selector");
     if (i!=helper.getLinkProperties().end()) {
         pn_data_t* filter = pn_terminus_filter(source);
         pn_data_put_map(filter);
         pn_data_enter(filter);
-        pn_data_put_symbol(filter, convert("qpid.selector"));
+        pn_data_put_symbol(filter, convert("selector"));
         pn_data_put_described(filter);
         pn_data_enter(filter);
-        pn_data_put_symbol(filter, convert(qpid::amqp::filters::QPID_SELECTOR_FILTER_SYMBOL));
+        pn_data_put_ulong(filter, qpid::amqp::filters::SELECTOR_FILTER_CODE);
         pn_data_put_string(filter, convert(i->second));
         pn_data_exit(filter);
         pn_data_exit(filter);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org