From 1dcef3957393c0500b81d93ffacf573e78be9a51 Mon Sep 17 00:00:00 2001
From: dimitri staessens <dimitri.staessens@ugent.be>
Date: Tue, 19 Sep 2017 17:47:26 +0200
Subject: ipcpd: Enroll DHT when creating dt connection

The DHT will now enroll or sync when a data transfer connection is
added. This avoids the need to create a temporary data transfer
connection during enrollment (and speeds it up considerably).

The notifier system was modified to take an opaque pointer to the
object that registers as a parameter.
---
 src/lib/notifier.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

(limited to 'src/lib')

diff --git a/src/lib/notifier.c b/src/lib/notifier.c
index cfd383d4..5c38cf58 100644
--- a/src/lib/notifier.c
+++ b/src/lib/notifier.c
@@ -30,6 +30,7 @@
 struct listener {
         struct list_head next;
         notifier_fn_t    callback;
+        void *           obj;
 };
 
 struct {
@@ -72,13 +73,16 @@ void notifier_event(int          event,
 
         pthread_mutex_lock(&notifier.lock);
 
-        list_for_each(p, &notifier.listeners)
-                list_entry(p, struct listener, next)->callback(event, o);
+        list_for_each(p, &notifier.listeners) {
+                struct listener * l = list_entry(p, struct listener, next);
+                l->callback(l->obj, event, o);
+        }
 
         pthread_mutex_unlock(&notifier.lock);
 }
 
-int notifier_reg(notifier_fn_t callback)
+int notifier_reg(notifier_fn_t callback,
+                 void *        obj)
 {
         struct listener *  l;
         struct list_head * p;
@@ -100,8 +104,9 @@ int notifier_reg(notifier_fn_t callback)
         }
 
         l->callback = callback;
+        l->obj      = obj;
 
-        list_add(&l->next, &notifier.listeners);
+        list_add_tail(&l->next, &notifier.listeners);
 
         pthread_mutex_unlock(&notifier.lock);
 
-- 
cgit v1.2.3