You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2016/02/22 23:02:41 UTC

[2/3] qpid-dispatch git commit: DISPATCH_179 - Address-prefix configuration is wired into the core and working.

DISPATCH_179 - Address-prefix configuration is wired into the core and working.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/b0c0b04d
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/b0c0b04d
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/b0c0b04d

Branch: refs/heads/tross-DISPATCH-179-1
Commit: b0c0b04d7b774aa8ce30635ddc9403a83011b4b5
Parents: a26308d
Author: Ted Ross <tr...@redhat.com>
Authored: Mon Feb 22 14:50:54 2016 -0500
Committer: Ted Ross <tr...@redhat.com>
Committed: Mon Feb 22 14:50:54 2016 -0500

----------------------------------------------------------------------
 src/router_core/agent_provisioned.c | 21 ++++++++++++++++-----
 src/router_core/connections.c       |  9 +++++----
 2 files changed, 21 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/b0c0b04d/src/router_core/agent_provisioned.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_provisioned.c b/src/router_core/agent_provisioned.c
index 83b436f..1c99c7a 100644
--- a/src/router_core/agent_provisioned.c
+++ b/src/router_core/agent_provisioned.c
@@ -187,7 +187,8 @@ static qd_address_semantics_t qdra_semantics(qd_parsed_field_t *field)
 }
 
 
-static qdr_address_t *qdra_configure_address_CT(qdr_core_t *core, qd_parsed_field_t *addr_field, char cls, qd_address_semantics_t semantics)
+static qdr_address_config_t *qdra_configure_address_prefix_CT(qdr_core_t *core, qd_parsed_field_t *addr_field, char cls,
+                                                              qd_address_semantics_t semantics)
 {
     if (!addr_field)
         return 0;
@@ -196,24 +197,34 @@ static qdr_address_t *qdra_configure_address_CT(qdr_core_t *core, qd_parsed_fiel
     qd_address_iterator_override_prefix(iter, cls);
     qd_address_iterator_reset_view(iter, ITER_VIEW_ADDRESS_HASH);
 
-    qdr_address_t *addr = 0;
+    qdr_address_config_t *addr = 0;
     qd_hash_retrieve(core->addr_hash, iter, (void**) &addr);
     if (addr) {
         // Log error TODO
         return 0;
     }
 
-    addr = qdr_address_CT(core, semantics);
+    addr = new_qdr_address_config_t();
+    DEQ_ITEM_INIT(addr);
+    addr->semantics = semantics;
+
     if (!!addr) {
         qd_field_iterator_reset(iter);
         qd_hash_insert(core->addr_hash, iter, addr, &addr->hash_handle);
-        DEQ_INSERT_TAIL(core->addrs, addr);
+        DEQ_INSERT_TAIL(core->addr_config, addr);
     }
 
     return addr;
 }
 
 
+static qdr_address_t *qdra_configure_address_CT(qdr_core_t *core, qd_parsed_field_t *addr_field, char cls,
+                                                qd_address_semantics_t semantics)
+{
+    return 0;
+}
+
+
 void qdra_provisioned_create_CT(qdr_core_t *core, qd_field_iterator_t *name,
                                 qdr_query_t *query, qd_parsed_field_t *in_body)
 {
@@ -271,7 +282,7 @@ void qdra_provisioned_create_CT(qdr_core_t *core, qd_field_iterator_t *name,
 
         switch (prov->object_type) {
         case QDR_PROV_TYPE_ADDRESS:
-            prov->addr = qdra_configure_address_CT(core, addr_field, 'Z', prov->semantics);
+            prov->addr_config = qdra_configure_address_prefix_CT(core, addr_field, 'Z', prov->semantics);
             break;
 
         case QDR_PROV_TYPE_LINK_DEST:

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/b0c0b04d/src/router_core/connections.c
----------------------------------------------------------------------
diff --git a/src/router_core/connections.c b/src/router_core/connections.c
index 94c4b95..ab9f545 100644
--- a/src/router_core/connections.c
+++ b/src/router_core/connections.c
@@ -527,15 +527,16 @@ static char qdr_prefix_for_dir(qd_direction_t dir)
 
 static qd_address_semantics_t qdr_semantics_for_address(qdr_core_t *core, qd_field_iterator_t *iter)
 {
-    qdr_address_t *addr = 0;
+    qdr_address_config_t *addr = 0;
 
     //
-    // Question: Should we use a new prefix for configuration? (No: allows the possibility of
-    //           static routes; yes: prevents occlusion by mobile addresses with specified semantics)
+    // Set the prefix to 'Z' for configuration and do a prefix-retrieve to get the most
+    // specific match
     //
     qd_address_iterator_override_prefix(iter, 'Z');
     qd_hash_retrieve_prefix(core->addr_hash, iter, (void**) &addr);
-    return /* addr ? addr->semantics : */  QD_SEMANTICS_ANYCAST_CLOSEST; // FIXME
+    qd_address_iterator_override_prefix(iter, '\0');
+    return addr ? addr->semantics : QD_SEMANTICS_ANYCAST_CLOSEST;
 }
 
 


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