racket/collects/web-server/stuffers/store.ss
Jay McCarthy fe078ee54b stuffers
svn: r13474
2009-02-06 23:23:21 +00:00

20 lines
547 B
Scheme

#lang scheme
(define-struct store (write read))
(define (dir-store home)
(make-store
(lambda (key value)
(with-output-to-file
(build-path home (bytes->string/utf-8 key))
(lambda ()
(write value))
#:exists 'replace))
(lambda (key)
(with-input-from-file
(build-path home (bytes->string/utf-8 key))
(lambda () (read))))))
(provide/contract
[struct store ([write (bytes? bytes? . -> . void)]
[read (bytes? . -> . bytes?)])]
[dir-store (path-string? . -> . store?)])