Use for-trie/list in file-system-lll

This commit is contained in:
Tony Garnock-Jones 2016-02-29 09:15:29 -05:00
parent 5d2cb21d29
commit 95456a4fd5
1 changed files with 10 additions and 23 deletions

View File

@ -36,35 +36,22 @@
(match e (match e
[(? patch? p) [(? patch? p)
(transition files (transition files
(for/list [(name (project-assertions (patch-added p) (for-trie/list [((observe (file $name _)) (patch-added p))]
(observe (file (?!) ?))))] (let ()
(printf "At least one reader exists for ~v\n" name) (printf "At least one reader exists for ~v\n" name)
(define initial-content (hash-ref files name #f)) (define initial-content (hash-ref files name #f))
(spawn (file-observation-event-handler name) (spawn (file-observation-event-handler name)
initial-content initial-content
(patch-seq (core:assert (file name initial-content)) (patch-seq (core:assert (file name initial-content))
(sub (observe (file name ?))) (sub (observe (file name ?)))
(sub (save (file name ?))) (sub (save (file name ?)))
(sub (delete name))))))] (sub (delete name)))))))]
[(message (save (file name new-content))) [(message (save (file name new-content)))
(transition (hash-set files name new-content) '())] (transition (hash-set files name new-content) '())]
[(message (delete name)) [(message (delete name))
(transition (hash-remove files name) '())] (transition (hash-remove files name) '())]
[_ #f])) [_ #f]))
;; (transition files
;; (for-trie/list [((observe (file $name _))
;; (patch-added p))]
;; (let ()
;; (printf "At least one reader exists for ~v\n" name)
;; (define initial-content (hash-ref files name #f))
;; (spawn (file-observation-event-handler name)
;; initial-content
;; (patch-seq (core:assert (file name initial-content))
;; (sub (observe (file name ?)))
;; (sub (save (file name ?)))
;; (sub (delete name)))))))]
(spawn file-system-event-handler (spawn file-system-event-handler
(hash) (hash)
(patch-seq (sub (observe (file ? ?))) (patch-seq (sub (observe (file ? ?)))