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
[(? patch? p)
(transition files
(for/list [(name (project-assertions (patch-added p)
(observe (file (?!) ?))))]
(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))))))]
(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)))))))]
[(message (save (file name new-content)))
(transition (hash-set files name new-content) '())]
[(message (delete name))
(transition (hash-remove files name) '())]
[_ #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
(hash)
(patch-seq (sub (observe (file ? ?)))