bytebuf.clj

Branches > refactor/use-spec-1 > latest > files / src / dev / grahp / bytebuf.clj

(ns dev.grahp.bytebuf
  (:import
   [io.netty.buffer ByteBuf]
   [java.io Writer]))

(defn byte-buf-bytes [buf]
  (let [arr (byte-array (ByteBuf/.readableBytes buf))]
    (ByteBuf/.getBytes buf (ByteBuf/.readerIndex buf) arr)
    (vec arr)))

(defn print-bb [buf]
  (into []
        (comp
          (map #(bit-and % 0xFF))
          (interpose ", "))
        (byte-buf-bytes buf)))

(defmethod print-method ByteBuf [bb w]
  (Writer/.write w (str "#" (Class/.getSimpleName (type bb)) " "))
  (Writer/.write w "[")
  (Writer/.write w (apply str (print-bb bb)))
  (Writer/.write w "]"))