|
21 | 21 | (def ^:private ^:dynamic *store-buffer*) |
22 | 22 | ;; unused addresses |
23 | 23 | (def ^:private *delete-buffer (atom {})) |
24 | | -;; kept addresses |
25 | | -(def ^:private *kept-buffer (atom {})) |
26 | 24 |
|
27 | 25 | (defn serializable-datom [^Datom d] |
28 | 26 | [(.-e d) (.-a d) (.-v d) (.-tx d)]) |
|
44 | 42 | (store [_ ^Node node address] |
45 | 43 | (let [addr (cond |
46 | 44 | (and address (instance? Node node) |
47 | | - (contains? (set (.-addresses node)) address)) |
| 45 | + (contains? (set (.-_addresses node)) address)) |
48 | 46 | (gen-addr) |
49 | 47 | :else |
50 | 48 | (or address (gen-addr))) |
51 | 49 | keys (mapv serializable-datom (.-keys node)) |
52 | 50 | data (cond-> {:keys keys} |
53 | 51 | (instance? Node node) |
54 | | - (assoc :addresses (.-addresses node)))] |
| 52 | + (assoc :addresses (.-_addresses node)))] |
55 | 53 | (vswap! *store-buffer* conj! [addr data]) |
56 | 54 | addr)) |
57 | 55 | (restore [_ addr] |
|
68 | 66 | ;; TODO: |
69 | 67 | nil) |
70 | 68 |
|
71 | | - (delete [_ unused-addresses kept-addresses] |
| 69 | + (delete [_ unused-addresses] |
72 | 70 | (swap! *delete-buffer update storage |
73 | 71 | (fn [buffer] |
74 | | - (concat buffer (remove nil? unused-addresses)))) |
75 | | - (swap! *kept-buffer update storage |
76 | | - (fn [buffer] |
77 | | - (concat buffer (remove nil? kept-addresses)))))) |
| 72 | + (into buffer (remove nil? unused-addresses)))))) |
78 | 73 |
|
79 | 74 | (defn make-storage-adapter [storage _opts] |
80 | 75 | (StorageAdapter. storage)) |
|
122 | 117 | (vswap! *store-buffer* conj! [root-addr meta]) |
123 | 118 | (vswap! *store-buffer* conj! [tail-addr []]) |
124 | 119 | (let [storage (:storage adapter) |
125 | | - kept-addrs (set (get @*kept-buffer storage)) |
126 | 120 | delete-addrs (->> (get @*delete-buffer storage) |
127 | | - (remove kept-addrs)) |
128 | | - _ (swap! *delete-buffer assoc storage nil) |
129 | | - _ (swap! *kept-buffer assoc storage nil)] |
| 121 | + (distinct)) |
| 122 | + _ (swap! *delete-buffer assoc storage nil)] |
130 | 123 | (-store storage (persistent! @*store-buffer*) delete-addrs))) |
131 | 124 | db)))) |
132 | 125 |
|
|
0 commit comments