Mod (experimental) Compressable-LZMA2 to use new :skip-header? mode, add :headerless-meta assertion

This commit is contained in:
Peter Taoussanis 2014-02-09 18:29:16 +07:00
parent e2847f348f
commit 0b56746a61

View file

@ -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))