package hook import ( "tunnel/pkg/server/env" "tunnel/pkg/server/queue" ) type splitHook struct { Size int `opts:"positive,default:1024"` } type splitPipe struct { h *splitHook } func (p splitPipe) Send(rq, wq queue.Q) error { for b := range rq { var upto int for n := 0; n < len(b); n = upto { upto += p.h.Size if upto > len(b) { upto = len(b) } wq <- b[n:upto] } } return nil } func (h *splitHook) New(env.Env) (interface{}, error) { return &splitPipe{h}, nil } func init() { register("split", splitHook{}) }