static qdr_conn_identifier_t *qdr_route_declare_id_CT(qdr_core_t *core, qd_iterator_t *container, qd_iterator_t *connection) { qdr_conn_identifier_t *cid = 0; if (container && connection) { qd_iterator_reset_view(container, ITER_VIEW_ADDRESS_HASH); qd_iterator_annotate_prefix(container, CONTAINER_PREFIX); qd_hash_retrieve(core->conn_id_hash, container, (void**) &cid); if (!cid) { qd_iterator_reset_view(connection, ITER_VIEW_ADDRESS_HASH); qd_iterator_annotate_prefix(connection, CONNECTION_PREFIX); qd_hash_retrieve(core->conn_id_hash, connection, (void**) &cid); } if (!cid) { cid = new_qdr_conn_identifier_t(); ZERO(cid); // // The container and the connection will represent the same connection. // qd_hash_insert(core->conn_id_hash, container, cid, &cid->container_hash_handle); qd_hash_insert(core->conn_id_hash, connection, cid, &cid->connection_hash_handle); } } else if (container) { qd_iterator_reset_view(container, ITER_VIEW_ADDRESS_HASH); qd_iterator_annotate_prefix(container, CONTAINER_PREFIX); qd_hash_retrieve(core->conn_id_hash, container, (void**) &cid); if (!cid) { cid = new_qdr_conn_identifier_t(); ZERO(cid); qd_hash_insert(core->conn_id_hash, container, cid, &cid->container_hash_handle); } } else if (connection) { qd_iterator_reset_view(connection, ITER_VIEW_ADDRESS_HASH); qd_iterator_annotate_prefix(connection, CONNECTION_PREFIX); qd_hash_retrieve(core->conn_id_hash, connection, (void**) &cid); if (!cid) { cid = new_qdr_conn_identifier_t(); ZERO(cid); qd_hash_insert(core->conn_id_hash, connection, cid, &cid->connection_hash_handle); } } return cid; }
static qdr_conn_identifier_t *qdr_route_declare_id_CT(qdr_core_t *core, qd_field_iterator_t *conn_id, bool is_container) { char prefix = is_container ? 'C' : 'L'; qdr_conn_identifier_t *cid = 0; qd_address_iterator_reset_view(conn_id, ITER_VIEW_ADDRESS_HASH); qd_address_iterator_override_prefix(conn_id, prefix); qd_hash_retrieve(core->conn_id_hash, conn_id, (void**) &cid); if (!cid) { cid = new_qdr_conn_identifier_t(); ZERO(cid); qd_hash_insert(core->conn_id_hash, conn_id, cid, &cid->hash_handle); } return cid; }