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/01/08 22:22:24 UTC

qpid-dispatch git commit: DISPATCH-179 - Added connection-activation linkage.

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 <tr...@redhat.com>
Authored: Fri Jan 8 16:21:54 2016 -0500
Committer: Ted Ross <tr...@redhat.com>
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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org