;;;; remote-mailbox-adapter.scm ;;;; Kon Lovett, Sep '17 (module remote-mailbox-adapter (;export ;; serializer deserializer serializer-output serialize deserialize ) (import scheme chicken) (import (prefix s11n s11n::)) (require-library s11n) (import (only type-errors warning-argument-type)) (require-library type-errors) (use miscmacros condition-utils) ;;; ;; (define-parameter serializer s11n::serialize (lambda (x) (cond ((procedure? x) x) ((not x) s11n::serialize) (else (warning-argument-type 'remote-mailbox-adapter::serializer x 'procedure) (serializer))) ) ) (define-parameter deserializer s11n::deserialize (lambda (x) (cond ((procedure? x) x) ((not x) s11n::deserialize) (else (warning-argument-type 'remote-mailbox-adapter::deserializer x 'procedure) (deserializer) ) ) ) ) (define +default-deserializer-input+ (current-input-port)) (define +default-serializer-output+ (current-output-port)) (define-parameter deserializer-input +default-deserializer-input+ (lambda (x) (cond ((input-port? x) x) ((not x) +default-deserializer-input+) (else (warning-argument-type 'remote-mailbox-adapter::deserializer-input x 'input-port) (deserializer-input) ) ) ) ) (define-parameter serializer-output +default-serializer-output+ (lambda (x) (cond ((output-port? x) x) ((not x) +default-serializer-output+) (else (warning-argument-type 'remote-mailbox-adapter::serializer-output x 'output-port) (serializer-output) ) ) ) ) ;; (define (serialize x #!optional (port (serializer-output))) ((serializer) x port) ) (define (deserialize #!optional (port (deserializer-input))) ((deserializer) port) ) ) ;module remote-mailbox-adapter