diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-12-16 15:27:48 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-12-16 15:27:48 +0300 |
| commit | 6fed9dd0dd62718f78eca11e30a71c2712636fbd (patch) | |
| tree | 8d1f90b96efbe8ea8aea350c283325adc216ef9d /pkg/server/hook/split.go | |
| parent | 050ea053dd549f0dd01beddfcd74989858391fd7 (diff) | |
hook and socket args check fix, tests
Diffstat (limited to 'pkg/server/hook/split.go')
| -rw-r--r-- | pkg/server/hook/split.go | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/pkg/server/hook/split.go b/pkg/server/hook/split.go index 6a2c4ca..59c8055 100644 --- a/pkg/server/hook/split.go +++ b/pkg/server/hook/split.go @@ -1,27 +1,24 @@ package hook import ( - "errors" - "strconv" "tunnel/pkg/server/env" - "tunnel/pkg/server/opts" "tunnel/pkg/server/queue" ) -const splitDefaultSize = 1024 - -var errBadSize = errors.New("bad size value") - type splitHook struct { - size int + Size int `opts:"positive,default:1024"` +} + +type splitPipe struct { + h *splitHook } -func (h *splitHook) Send(rq, wq queue.Q) error { +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 += h.size + upto += p.h.Size if upto > len(b) { upto = len(b) @@ -34,24 +31,10 @@ func (h *splitHook) Send(rq, wq queue.Q) error { return nil } -func (h *splitHook) Open(env.Env) (interface{}, error) { - return h, nil -} - -func newSplitHook(opts opts.Opts) (hook, error) { - size := splitDefaultSize - - if s, ok := opts["size"]; ok { - var err error - - if size, err = strconv.Atoi(s); err != nil || size <= 0 { - return nil, errBadSize - } - } - - return &splitHook{size: size}, nil +func (h *splitHook) New(env.Env) (interface{}, error) { + return &splitPipe{h}, nil } func init() { - register("split", newSplitHook) + register("split", splitHook{}) } |
