Changed dc-handle-fn and the new dc-handle-msg to one function dc-util-handle.
authorFredrik Tolf <fredrik@dolda2000.com>
Tue, 13 Nov 2007 16:07:39 +0000 (17:07 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Tue, 13 Nov 2007 16:07:39 +0000 (17:07 +0100)
lib/guile/dolcon/util.scm

index 5680338..30b25c1 100644 (file)
@@ -21,6 +21,7 @@
 (define fnetnodes '())
 (define loop-procs '())
 (define fn-procs '())
+(define msg-procs '())
 
 (define-public dc-fn-update
   (lambda ()
@@ -71,7 +72,7 @@
     (set! fn-procs (cons (list event proc)
                         fn-procs))))
 
-(define-public dc-handle-fn
+(define dc-handle-fn
   (lambda ()
     (dc-fn-update)
     (let* ((notify (lambda (event data) (for-each (lambda (o) (if (eq? event (car o)) ((cadr o) data))) fn-procs)))
                                     (notify 'dstr (cdr nform))
                                     (set! fnetnodes (delq nform fnetnodes))))))))
 
+(define-public dc-msgproc-reg
+  (lambda (proc)
+    (set! msg-procs (cons proc msg-procs))))
+
+(define dc-handle-msg
+  (lambda ()
+    (dc-loop-reg ".notify" 640 (lambda (r er)
+                                (let ((sender (cadadr (assq 'resp er)))
+                                      (message (cddadr (assq 'resp er))))
+                                  (for-each (lambda (o) (o sender message))
+                                            msg-procs))))))
+
+(define-public dc-util-handle
+  (lambda what
+    (for-each (lambda (o)
+               (case o
+                 ((fn) (dc-handle-fn))
+                 ((msg) (dc-handle-msg))))
+             what)))
+
 (define-public dc-loop-reg
   (lambda (cmd code proc)
     (set! loop-procs (cons (cons (cons cmd code) proc)