From f44d6e1a111154b70aaeac9ffe38beaee2cc5dd7 Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Tue, 21 Apr 2020 14:54:27 +0300 Subject: rename auto socket to defer --- pkg/server/socket/auto.go | 80 --------------------------------------------- pkg/server/socket/defer.go | 80 +++++++++++++++++++++++++++++++++++++++++++++ pkg/server/socket/dial.go | 4 +-- pkg/server/socket/socket.go | 4 +-- 4 files changed, 84 insertions(+), 84 deletions(-) delete mode 100644 pkg/server/socket/auto.go create mode 100644 pkg/server/socket/defer.go (limited to 'pkg') diff --git a/pkg/server/socket/auto.go b/pkg/server/socket/auto.go deleted file mode 100644 index 97bc625..0000000 --- a/pkg/server/socket/auto.go +++ /dev/null @@ -1,80 +0,0 @@ -package socket - -import ( - "tunnel/pkg/server/env" - "tunnel/pkg/server/queue" -) - -type autoSocket struct { - S -} - -type autoChannel struct { - s *autoSocket - c chan Channel - e env.Env -} - -func newAutoSocket(proto, addr string) (S, error) { - s, err := newDialSocket(proto, addr) - if err != nil { - return s, err - } - - return &autoSocket{s}, nil -} - -func (s *autoSocket) Open(env env.Env) (Channel, error) { - c := &autoChannel{ - s: s, - c: make(chan Channel), - e: env, - } - - return c, nil -} - -func (c *autoChannel) String() string { - return "auto" -} - -func (c *autoChannel) Send(wq queue.Q) error { - if x := <-c.c; x == nil { - return nil - } else { - return x.Send(wq) - } -} - -func (c *autoChannel) Recv(rq queue.Q) error { - b := <-rq - if b == nil { - close(c.c) - return nil - } - - x, err := c.s.S.Open(c.e) - if err != nil { - close(c.c) - return err - } - - c.c <- x - - q := queue.New() - - go func() { - q <- b - queue.Copy(rq, q) - close(q) - }() - - defer q.Dry() - - return x.Recv(q) -} - -/* TODO */ -func (c *autoChannel) Close() error { - return nil -} diff --git a/pkg/server/socket/defer.go b/pkg/server/socket/defer.go new file mode 100644 index 0000000..bfb2157 --- /dev/null +++ b/pkg/server/socket/defer.go @@ -0,0 +1,80 @@ +package socket + +import ( + "tunnel/pkg/server/env" + "tunnel/pkg/server/queue" +) + +type deferSocket struct { + S +} + +type deferChannel struct { + s *deferSocket + c chan Channel + e env.Env +} + +func newDeferSocket(proto, addr string) (S, error) { + s, err := newDialSocket(proto, addr) + if err != nil { + return s, err + } + + return &deferSocket{s}, nil +} + +func (s *deferSocket) Open(env env.Env) (Channel, error) { + c := &deferChannel{ + s: s, + c: make(chan Channel), + e: env, + } + + return c, nil +} + +func (c *deferChannel) String() string { + return "defer" +} + +func (c *deferChannel) Send(wq queue.Q) error { + if x := <-c.c; x == nil { + return nil + } else { + return x.Send(wq) + } +} + +func (c *deferChannel) Recv(rq queue.Q) error { + b := <-rq + if b == nil { + close(c.c) + return nil + } + + x, err := c.s.S.Open(c.e) + if err != nil { + close(c.c) + return err + } + + c.c <- x + + q := queue.New() + + go func() { + q <- b + queue.Copy(rq, q) + close(q) + }() + + defer q.Dry() + + return x.Recv(q) +} + +/* TODO */ +func (c *deferChannel) Close() error { + return nil +} diff --git a/pkg/server/socket/dial.go b/pkg/server/socket/dial.go index 818fbc6..d4c20e1 100644 --- a/pkg/server/socket/dial.go +++ b/pkg/server/socket/dial.go @@ -26,8 +26,8 @@ func (s *dialSocket) String() string { return fmt.Sprintf("%s/%s", s.proto, s.addr) } -func (s *dialSocket) Open(env.Env) (Channel, error) { - conn, err := net.Dial(s.proto, s.addr) +func (s *dialSocket) Open(e env.Env) (Channel, error) { + conn, err := net.Dial(s.proto, e.Eval(s.addr)) if err != nil { return nil, err } diff --git a/pkg/server/socket/socket.go b/pkg/server/socket/socket.go index 7b5ea73..1d447f8 100644 --- a/pkg/server/socket/socket.go +++ b/pkg/server/socket/socket.go @@ -107,8 +107,8 @@ func New(desc string, env env.Env) (S, error) { return newListenSocket(proto, addr) } - if _, ok := opts["auto"]; ok { - return newAutoSocket(proto, addr) + if _, ok := opts["defer"]; ok { + return newDeferSocket(proto, addr) } return newDialSocket(proto, addr) -- cgit v1.2.3-70-g09d2