source: project/release/4/remote-mailbox/trunk/remote-mailbox-adapter.scm @ 34113

Last change on this file since 34113 was 34113, checked in by kon, 2 years ago

add abstractions

File size: 1.8 KB
Line 
1;;;; remote-mailbox-adapter.scm
2;;;; Kon Lovett, Sep '17
3
4(module remote-mailbox-adapter
5
6(;export
7  ;;
8  serializer
9  deserializer
10  serializer-output
11  serialize
12  deserialize
13  )
14
15(import scheme chicken)
16
17(import (prefix s11n s11n::))
18(require-library s11n)
19
20(import (only type-errors warning-argument-type))
21(require-library type-errors)
22
23(use miscmacros condition-utils)
24
25;;;
26
27;;
28
29(define-parameter serializer s11n::serialize
30  (lambda (x)
31        (cond
32          ((procedure? x)   x)
33      ((not x)          s11n::serialize)
34      (else
35        (warning-argument-type 'remote-mailbox-adapter::serializer x 'procedure)
36        (serializer))) ) )
37
38(define-parameter deserializer s11n::deserialize
39  (lambda (x)
40        (cond
41          ((procedure? x)   x)
42      ((not x)          s11n::deserialize)
43      (else
44        (warning-argument-type 'remote-mailbox-adapter::deserializer x 'procedure)
45        (deserializer) ) ) ) )
46
47(define +default-deserializer-input+ (current-input-port))
48(define +default-serializer-output+ (current-output-port))
49
50(define-parameter deserializer-input +default-deserializer-input+
51  (lambda (x)
52        (cond
53          ((input-port? x)  x)
54      ((not x)          +default-deserializer-input+)
55      (else
56        (warning-argument-type 'remote-mailbox-adapter::deserializer-input x 'input-port)
57        (deserializer-input) ) ) ) )
58
59(define-parameter serializer-output +default-serializer-output+
60  (lambda (x)
61        (cond
62          ((output-port? x)  x)
63      ((not x)          +default-serializer-output+)
64      (else
65        (warning-argument-type 'remote-mailbox-adapter::serializer-output x 'output-port)
66        (serializer-output) ) ) ) )
67
68;;
69
70(define (serialize x #!optional (port (serializer-output)))
71  ((serializer) x port) )
72
73(define (deserialize #!optional (port (deserializer-input)))
74  ((deserializer) port) )
75
76) ;module remote-mailbox-adapter
Note: See TracBrowser for help on using the repository browser.