Repository: qpid-dispatch Updated Branches: refs/heads/tross-DISPATCH-179-1 1aa7fece4 -> 59cc7b53d
DISPATCH-179 - Added connection-activation linkage. Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/59cc7b53 Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/59cc7b53 Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/59cc7b53 Branch: refs/heads/tross-DISPATCH-179-1 Commit: 59cc7b53d072d151fa31b9b75edcaf6eb4f16ef9 Parents: 1aa7fec Author: Ted Ross <[email protected]> Authored: Fri Jan 8 16:21:54 2016 -0500 Committer: Ted Ross <[email protected]> Committed: Fri Jan 8 16:21:54 2016 -0500 ---------------------------------------------------------------------- src/router_core/connections.c | 8 +++++++- src/router_core/forwarder.c | 4 ++-- src/router_core/router_core_private.h | 2 ++ src/router_node.c | 5 +++++ 4 files changed, 16 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/59cc7b53/src/router_core/connections.c ---------------------------------------------------------------------- diff --git a/src/router_core/connections.c b/src/router_core/connections.c index f93051e..697b6ce 100644 --- a/src/router_core/connections.c +++ b/src/router_core/connections.c @@ -283,6 +283,12 @@ void qdr_connection_handlers(qdr_core_t *core, // In-Thread Functions //================================================================================== +void qdr_connection_activate_CT(qdr_core_t *core, qdr_connection_t *conn) +{ + core->activate_handler(core->user_context, conn); +} + + static void qdr_connection_enqueue_work_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_connection_work_t *work) @@ -293,7 +299,7 @@ static void qdr_connection_enqueue_work_CT(qdr_core_t *core, sys_mutex_unlock(conn->work_lock); if (notify) - core->activate_handler(core->user_context, conn); + qdr_connection_activate_CT(core, conn); } http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/59cc7b53/src/router_core/forwarder.c ---------------------------------------------------------------------- diff --git a/src/router_core/forwarder.c b/src/router_core/forwarder.c index a7400af..85759b5 100644 --- a/src/router_core/forwarder.c +++ b/src/router_core/forwarder.c @@ -82,7 +82,7 @@ int qdr_forward_multicast_CT(qdr_core_t *core, qdr_link_t *out_link = link_ref->link; qdr_delivery_t *out_delivery = qdr_forward_new_delivery(in_delivery, out_link, msg); DEQ_INSERT_TAIL(out_link->undelivered, out_delivery); // TODO - check locking on this list - // TODO activate the connection for the out link + qdr_connection_activate_CT(core, out_link->conn); fanout++; link_ref = DEQ_NEXT(link_ref); } @@ -152,7 +152,7 @@ int qdr_forward_multicast_CT(qdr_core_t *core, DEQ_INSERT_TAIL(dest_link->undelivered, out_delivery); // TODO - check locking on this list fanout++; addr->deliveries_transit++; - // TODO - Activate link's connection + qdr_connection_activate_CT(core, dest_link->conn); } } http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/59cc7b53/src/router_core/router_core_private.h ---------------------------------------------------------------------- diff --git a/src/router_core/router_core_private.h b/src/router_core/router_core_private.h index aa9f3ee..8d80bf5 100644 --- a/src/router_core/router_core_private.h +++ b/src/router_core/router_core_private.h @@ -424,6 +424,8 @@ void qdr_post_link_lost_CT(qdr_core_t *core, int link_maskbit); void qdr_post_general_work_CT(qdr_core_t *core, qdr_general_work_t *work); void qdr_check_addr_CT(qdr_core_t *core, qdr_address_t *addr, bool was_local); +void qdr_connection_activate_CT(qdr_core_t *core, qdr_connection_t *conn); + qdr_query_t *qdr_query(qdr_core_t *core, void *context, qd_router_entity_type_t type, http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/59cc7b53/src/router_node.c ---------------------------------------------------------------------- diff --git a/src/router_node.c b/src/router_node.c index 08da120..1c7b0dd 100644 --- a/src/router_node.c +++ b/src/router_node.c @@ -554,6 +554,11 @@ qd_router_t *qd_router(qd_dispatch_t *qd, qd_router_mode_t mode, const char *are static void qd_router_connection_activate(void *context, qdr_connection_t *conn) { + // + // IMPORTANT: This is the only core callback that is invoked on the core + // thread itself. It is imperative that this function do nothing + // apart from setting the activation in the server for the connection. + // qd_server_activate((qd_connection_t*) qdr_connection_get_context(conn)); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
