#lang racket/base (require keystore) (provide open-flac2opus-state flac2opus-state-get-file flac2opus-state-set-file! flac2opus-state-drop-file! flac2opus-state-known-relpaths) (define prefix "flac2opus:file:") (define (open-flac2opus-state state-file) (ks-open state-file)) (define (file-state-key relpath) (string-append prefix relpath)) (define (flac2opus-state-get-file ks relpath [default #f]) (ks-get ks (file-state-key relpath) default)) (define (flac2opus-state-set-file! ks relpath value) (ks-set! ks (file-state-key relpath) value)) (define (flac2opus-state-drop-file! ks relpath) (ks-drop! ks (file-state-key relpath))) (define (flac2opus-state-known-relpaths ks) (map (lambda (k) (substring k (string-length prefix))) (ks-keys-glob ks (string-append prefix "*"))))