| 1 | (define-module (dolcon util)) |
| 2 | (use-modules (dolcon ui)) |
| 3 | |
| 4 | (define fnetnodes '()) |
| 5 | |
| 6 | (define-public dc-fn-update |
| 7 | (lambda () |
| 8 | (set! fnetnodes |
| 9 | (let ((resp (dc-ecmd "lsnodes")) (er #f)) |
| 10 | (if (and resp (begin (set! er (dc-extract resp)) er) (= (cdr (assq 'code er)) 200)) |
| 11 | (map (lambda (o) |
| 12 | (apply (lambda (id net name users state) |
| 13 | (cons id |
| 14 | (list (cons 'id id) |
| 15 | (cons 'net net) |
| 16 | (cons 'name name) |
| 17 | (cons 'users users) |
| 18 | (cons 'state (list-ref '(syn hs est dead) state))))) |
| 19 | o)) |
| 20 | (dc-intall resp)) |
| 21 | '()))) |
| 22 | fnetnodes)) |
| 23 | |
| 24 | (define-public dc-fn-getattrib |
| 25 | (lambda (id attrib) |
| 26 | (if (not (assq id fnetnodes)) |
| 27 | (dc-fn-update)) |
| 28 | (let ((aform (assq id fnetnodes))) |
| 29 | (if aform |
| 30 | (cdr (assq attrib (cdr aform))) |
| 31 | #f)))) |
| 32 | |
| 33 | (define-public dc-fn-getname |
| 34 | (lambda (id) |
| 35 | (dc-fn-getattrib id 'name))) |
| 36 | |
| 37 | (define-public dc-getfnetnodes |
| 38 | (lambda () |
| 39 | (map (lambda (o) (car o)) |
| 40 | fnetnodes))) |