srfi-18 ; threads
srfi-69 ; hash-table
uuid ; ids for actors
+ uri-generic
udp
fifo)
(define (address-port address)
(caddr address))
(define (address->string address)
- (with-output-to-string
- (lambda () (write address))))
+ (uri->string
+ (make-uri #:scheme "actor"
+ #:host (address-host address)
+ #:port (address-port address)
+ #:path (list '/ (address-id address)))))
(define (string->address str)
- (with-input-from-string str read))
+ (let ((uri (uri-reference str)))
+ (make-address (uri-host uri)
+ (uri-port uri)
+ (cadr (uri-path uri)))))
(define (address-local? address)
(and (equal? (address-host address) sam-host)
(let ((id (address-id address)))
(let ((behaviour (hash-table-ref/default actor-table id '())))
(if (null? behaviour)
- (print "Warning: discarded message" message " to unknown actor " address)
+ (print "Warning: discarded message " message
+ " to unknown actor id " id)
(match (apply (hash-table-ref actor-table id) (cons address message))
('done (hash-table-delete! actor-table id))
('sleep 'do-nothing)