X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=actors.git;a=blobdiff_plain;f=actors.scm;h=1c19346af3cd9407e78ecdfc6ae504a0bca32a2c;hp=fc266a33d0f3601cdc83c0745fe619fe5ed130d7;hb=HEAD;hpb=dbbcc6458c25b95e2813c2efa5f1e4c10dd78f65 diff --git a/actors.scm b/actors.scm index fc266a3..1c19346 100644 --- a/actors.scm +++ b/actors.scm @@ -6,12 +6,17 @@ send-and-run restart enable-trace - disable-trace) + disable-trace + save-actors + save-actors-to + load-actors + load-actors-from) (import scheme (chicken base) srfi-69 - matchable) + matchable + s11n) (define trace-enabled #f) ;used for debugging @@ -151,4 +156,23 @@ (define (restart) (set! message-queue (make-fifo)) - (set! actor-table (make-hash-table)))) + (set! actor-table (make-hash-table))) + +;;; +;;; Serialization +;;; + + (define (save-actors-to filename) + (with-output-to-file filename + (lambda () + (serialize (hash-table->alist actor-table))))) + + (define (save-actors) + (save-actors-to "image")) + + (define (load-actors-from filename) + (set! actor-table + (alist->hash-table (with-input-from-file filename deserialize)))) + + (define (load-actors) + load-actors-from "image"))