next up previous contents index
Next: club5d.scm Up: Files Previous: Files

club5.scm

(declare (usual-integrations))

(define id (random 1000000))

(define global-timeout (make-timeout-event 10000)) (define leader-timeout (make-timeout-event (random 5000))) (define collisions 0)

(color-me "blue")

(define clubs-I-belong-to '())

(define still-competing? #T)

(define primitive-message-event (make-event))

(define (club-event-loop) (select (global-timeout 'done) ((and still-competing? leader-timeout) (event.clear! leader-timeout) (color-me "red") (set! still-competing? #F) (broadcast id) ; a LEADER message (club-event-loop)) (primitive-message-event => (lambda (message) (event.clear! primitive-message-event) (if (eq? message 'collision) (set! collisions (+ collisions 1)) (begin (set! still-competing? #F) (set! clubs-i-belong-to (cons message clubs-i-belong-to)) (color-me (length clubs-i-belong-to)))) (club-event-loop)))))

(club-event-loop)

(list id clubs-i-belong-to collisions)



Erik Rauch
Sat May 8 16:42:57 EDT 1999