4b38d4e
Branches > client-handling-rewrite > 4b38d4e > files / LICENSE
Add bit-mask type
Commit: 4b38d4e7245e454f051cdf8b481c11f23aa26b61
Parent: 8605065
1 changed file:
src/net/bowmap/packet/read.clj view file
@@ -55,6 +55,20 @@ acc)) {} codec-fields)) +(defn- mapize-vector-or-something [x]+ {:pre [(or (map? x) (vector? x))]}+ (if (vector? x)+ (zipmap (range) x)+ x))++(defn read-bit-mask! [buf codec mask]+ (let [n (codec buf)]+ (reduce-kv (fn [acc bit x]+ (if (bit-test n bit)+ (conj acc x)+ acc))+ #{} mask)))+ (declare readers) (defn reader@@ -78,6 +92,9 @@ :string read-string! :uuid read-uuid! :identifer read-string!+ :bit-mask (fn [t mask]+ (let [mask (mapize-vector-or-something mask)]+ (fn [buf] (read-bit-mask! buf (reader t) mask)))) :table (fn [table] (let [table (->> (s/conform ::t/table table) (mapv #(assoc % :codec (reader (:type %)))))]