"Type '/help' for a list of commands.\n")
(send-message system 'read self))
(('show-msg from text)
- (send-message system 'print "Message from " from ": " text))
+ (send-message system 'print from "> " text))
(((? string? str))
(if (string-prefix? "/" str)
(let* ((maybe-idx (string-index str #\space))
(send-message system 'print "Current recipients:")
(let loop ((recipients-left recipients))
(unless (null? recipients-left)
- (send-message system 'print (car recipients-left))
+ (send-message system 'print (address->string (car recipients-left)))
(loop (cdr recipients-left)))))))
((or "q" "quit")
(send-message system 'shutdown))
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)