package hook import ( "encoding/hex" "tunnel/pkg/server/env" "tunnel/pkg/server/opts" "tunnel/pkg/server/queue" ) type hexHook struct{} func (hexHook) Send(rq, wq queue.Q) error { enc := hex.NewEncoder(wq.Writer()) for b := range rq { enc.Write(b) } return nil } func (hexHook) Recv(rq, wq queue.Q) error { r := hex.NewDecoder(rq.Reader()) return queue.IoCopy(r, wq.Writer()) } func (h hexHook) Open(env.Env) (interface{}, error) { return h, nil } func newHexHook(opts.Opts, env.Env) (hook, error) { return hexHook{}, nil } func init() { register("hex", newHexHook) }