X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fguile%2Fhubmgr;h=39b4f43db958e1cc88db2a5b6bf6aa7046676fd3;hb=3af4536f80baf4ff661a577f8206b611ad07bab1;hp=daa5482fbf33a072f350bb367cb1996d883ea088;hpb=6b0819527e4ba32b7efc92d291a72db7b986a4b8;p=doldaconnect.git diff --git a/lib/guile/hubmgr b/lib/guile/hubmgr index daa5482..39b4f43 100755 --- a/lib/guile/hubmgr +++ b/lib/guile/hubmgr @@ -1,6 +1,23 @@ #!/usr/bin/guile -s !# +; Dolda Connect - Modular multiuser Direct Connect-style client +; Copyright (C) 2007 Fredrik Tolf +; +; This program is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + (use-modules (dolcon ui) (dolcon util)) (use-modules (ice-9 format)) @@ -68,21 +85,20 @@ (begin (set-cdr! (assq hub connlist) (car ir)) (logf "~a state syn (~a)" (cadr hub) (car ir))) (begin (set! connlist (delq (assq hub connlist) connlist)) + (set! statelist (cons (list hub (current-time) 10) statelist)) (logf "~a failed (~a)" (cadr hub) (cdr (assq 'code er)))))))))))) hublist)) (define (hubmgr-main args) (let ((dc-server #f)) - (if (not dc-server) (set! dc-server (getenv "DCSERVER"))) - (if (not dc-server) (set! dc-server "localhost")) - (set! hublist (read-hl)) (logf "read ~a hubs" (length hublist)) (dc-c&l #t dc-server #t) (dc-ecmd-assert 200 "notify" "fn:act" "on") (dc-handle-fn) (dc-fnproc-reg 'state (lambda (fn) - (if (eq? (cdr (assq 'state fn)) 'dead) + (if (and (eq? (cdr (assq 'state fn)) 'dead) + (assq (cdr (assq 'id fn)) (map (lambda (o) (cons (cdr o) (car o))) connlist))) (begin (logf "~a died" (cdr (assq 'id fn))) (dc-qcmd (list "dcnct" (cdr (assq 'id fn)))))) (cklist)))