From d9768084b4cde1dd4ac4edcbb432b7df4101bfc2 Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Sat, 1 May 2021 21:56:43 +0200 Subject: [PATCH] Replaced URIs as optional string representation of addresses. --- chat_client.scm | 4 ++-- sam.scm | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/chat_client.scm b/chat_client.scm index f6b16d6..947418f 100644 --- a/chat_client.scm +++ b/chat_client.scm @@ -14,7 +14,7 @@ "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)) @@ -51,7 +51,7 @@ (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)) diff --git a/sam.scm b/sam.scm index 17c6f41..88ae320 100644 --- a/sam.scm +++ b/sam.scm @@ -22,6 +22,7 @@ srfi-18 ; threads srfi-69 ; hash-table uuid ; ids for actors + uri-generic udp fifo) @@ -49,10 +50,16 @@ (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) @@ -71,7 +78,8 @@ (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) -- 2.20.1