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 <[email protected]> Authored: Mon Feb 22 14:50:54 2016 -0500 Committer: Ted Ross <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
