Просмотр исходного кода

PacketPassInactivityMonitor: add PacketPassInactivityMonitor_SetHandler

ambrop7 15 лет назад
Родитель
Сommit
2a8a3b8d8d
2 измененных файлов с 22 добавлено и 3 удалено
  1. 12 2
      flow/PacketPassInactivityMonitor.c
  2. 10 1
      flow/PacketPassInactivityMonitor.h

+ 12 - 2
flow/PacketPassInactivityMonitor.c

@@ -63,8 +63,10 @@ static void timer_handler (PacketPassInactivityMonitor *o)
     BReactor_SetTimer(o->reactor, &o->timer);
     
     // call handler
-    o->handler(o->user);
-    return;
+    if (o->handler) {
+        o->handler(o->user);
+        return;
+    }
 }
 
 void PacketPassInactivityMonitor_Init (PacketPassInactivityMonitor *o, PacketPassInterface *output, BReactor *reactor, btime_t interval, PacketPassInactivityMonitor_handler handler, void *user)
@@ -108,3 +110,11 @@ PacketPassInterface * PacketPassInactivityMonitor_GetInput (PacketPassInactivity
     
     return &o->input;
 }
+
+void PacketPassInactivityMonitor_SetHandler (PacketPassInactivityMonitor *o, PacketPassInactivityMonitor_handler handler, void *user)
+{
+    DebugObject_Access(&o->d_obj);
+    
+    o->handler = handler;
+    o->user = user;
+}

+ 10 - 1
flow/PacketPassInactivityMonitor.h

@@ -76,7 +76,7 @@ typedef struct {
  * @param output output interface
  * @param reactor reactor we live in
  * @param interval timer value in milliseconds
- * @param handler handler function for reporting inactivity
+ * @param handler handler function for reporting inactivity, or NULL to disable
  * @param user value passed to handler functions
  */
 void PacketPassInactivityMonitor_Init (PacketPassInactivityMonitor *o, PacketPassInterface *output, BReactor *reactor, btime_t interval, PacketPassInactivityMonitor_handler handler, void *user);
@@ -98,4 +98,13 @@ void PacketPassInactivityMonitor_Free (PacketPassInactivityMonitor *o);
  */
 PacketPassInterface * PacketPassInactivityMonitor_GetInput (PacketPassInactivityMonitor *o);
 
+/**
+ * Sets or removes the inactivity handler.
+ *
+ * @param o the object
+ * @param handler handler function for reporting inactivity, or NULL to disable
+ * @param user value passed to handler functions
+ */
+void PacketPassInactivityMonitor_SetHandler (PacketPassInactivityMonitor *o, PacketPassInactivityMonitor_handler handler, void *user);
+
 #endif