actors: Switch out address objects for more-easily-serialized cons cells
[8sync.git] / 8sync / systems / actors.scm
index 40c5c5712e5822df9a03f2b5bd7e81ce24cf7714..0ae6e054c0c0eec3ea57f34f9d131f13efb0b023 100644 (file)
@@ -38,7 +38,9 @@
             actor-hive
             actor-message-handler
 
-            <address>
+            ;;; Commenting out the <address> type for now;
+            ;;; it may be back when we have better serializers
+            ;; <address>
             make-address address?
             address-actor-id address-hive-id
 
 ;;; =========================
 
 (define-class <actor> ()
-  ;; An <address> object
+  ;; An address object
   (id #:init-thunk (require-slot "id")
       #:init-keyword #:id
       #:getter actor-id)
 (define-method (actor-message-handler (actor <actor>))
   (slot-ref actor 'message-handler))
 
-(define-record-type <address>
-  (make-address actor-id hive-id)  ; @@: Do we want the trailing -id?
-  address?
-  (actor-id address-actor-id)
-  (hive-id address-hive-id))
+;;; So these are the nicer representations of addresses.
+;;; However, they don't serialize so easily with scheme read/write, so we're
+;;; using the simpler cons cell version below for now.
 
-(set-record-type-printer!
- <address>
- (lambda (record port)
-   (format port "<address: ~s@~s>"
-           (address-actor-id record) (address-hive-id record))))
+;; (define-record-type <address>
+;;   (make-address actor-id hive-id)  ; @@: Do we want the trailing -id?
+;;   address?
+;;   (actor-id address-actor-id)
+;;   (hive-id address-hive-id))
+;;
+;; (set-record-type-printer!
+;;  <address>
+;;  (lambda (record port)
+;;    (format port "<address: ~s@~s>"
+;;            (address-actor-id record) (address-hive-id record))))
+;;
+
+(define (make-address actor-id hive-id)
+  (cons actor-id hive-id))
+
+(define (address-actor-id address)
+  (car address))
+
+(define (address-hive-id address)
+  (cdr address))
 
 (define (address->string address)
   (string-append (address-actor-id address) "@"
@@ -561,9 +577,15 @@ an integer."
    (message-deferred-reply message)))
 
 (define (write-message message port)
+  "Write out a message to a port for easy reading later.
+
+Note that if a sub-value can't be easily written to something
+Guile's `read' procedure knows how to read, this doesn't do anything
+to improve that.  You'll need a better serializer for that.."
   (write (serialize-message message) port))
 
 (define (serialize-message-pretty message)
+  "Serialize a message in a way that's easy for humans to read."
   `(*message*
     (id ,(message-id message))
     (to ,(message-to message))
@@ -575,4 +597,5 @@ an integer."
     (deferred-reply ,(message-deferred-reply message))))
 
 (define (pprint-message message)
+  "Pretty print a message."
   (pretty-print (serialize-message-pretty message)))