Mod (experimental) Compressable-LZMA2 to use new :skip-header? mode, add :headerless-meta assertion
This commit is contained in:
parent
e2847f348f
commit
0b56746a61
1 changed files with 9 additions and 4 deletions
|
|
@ -498,6 +498,10 @@
|
||||||
:as opts}]]
|
:as opts}]]
|
||||||
|
|
||||||
(let [headerless-meta (merge headerless-meta (:legacy-opts opts)) ; Deprecated
|
(let [headerless-meta (merge headerless-meta (:legacy-opts opts)) ; Deprecated
|
||||||
|
_ (assert (or (nil? headerless-meta)
|
||||||
|
(head-meta-id headerless-meta))
|
||||||
|
"Bad :headerless-meta (should be nil or a valid `head-meta` value)")
|
||||||
|
|
||||||
ex (fn [msg & [e]] (throw (Exception. (str "Thaw failed: " msg) e)))
|
ex (fn [msg & [e]] (throw (Exception. (str "Thaw failed: " msg) e)))
|
||||||
try-thaw-data
|
try-thaw-data
|
||||||
(fn [data-ba {:keys [compressed? encrypted?] :as _head-or-headerless-meta}]
|
(fn [data-ba {:keys [compressed? encrypted?] :as _head-or-headerless-meta}]
|
||||||
|
|
@ -595,8 +599,7 @@
|
||||||
|
|
||||||
(defrecord Compressable-LZMA2 [value])
|
(defrecord Compressable-LZMA2 [value])
|
||||||
(extend-freeze Compressable-LZMA2 128 [x out]
|
(extend-freeze Compressable-LZMA2 128 [x out]
|
||||||
(let [[_ ^bytes ba] (-> (freeze (:value x) {:compressor nil})
|
(let [ba (freeze (:value x) {:skip-header? true :compressor nil})
|
||||||
(utils/ba-split 4))
|
|
||||||
ba-len (alength ba)
|
ba-len (alength ba)
|
||||||
compress? (> ba-len 1024)]
|
compress? (> ba-len 1024)]
|
||||||
(.writeBoolean out compress?)
|
(.writeBoolean out compress?)
|
||||||
|
|
@ -607,8 +610,10 @@
|
||||||
(extend-thaw 128 [in]
|
(extend-thaw 128 [in]
|
||||||
(let [compressed? (.readBoolean in)
|
(let [compressed? (.readBoolean in)
|
||||||
ba (read-bytes in)]
|
ba (read-bytes in)]
|
||||||
(thaw (wrap-header ba {:compressed? compressed? :encrypted? false})
|
(thaw ba {:compressor compression/lzma2-compressor
|
||||||
{:compressor compression/lzma2-compressor})))
|
:headerless-meta {:version 1
|
||||||
|
:compressed? compressed?
|
||||||
|
:encrypted? false}})))
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
(->> (apply str (repeatedly 1000 rand))
|
(->> (apply str (repeatedly 1000 rand))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue