diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-03-08 01:33:06 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-03-08 01:33:06 +0300 |
| commit | 45009e12dd8c8dda711c08f91bc8f6c925966d93 (patch) | |
| tree | 1c9efeaa980b2c3a16779b591cda56d2aae5f86f /pkg/server/socket/socket.go | |
| parent | c83b04c10c3d1126f295a72f9e6d96bf1924238a (diff) | |
mono, force and simpler channels
Diffstat (limited to 'pkg/server/socket/socket.go')
| -rw-r--r-- | pkg/server/socket/socket.go | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/pkg/server/socket/socket.go b/pkg/server/socket/socket.go index 0060ce6..1bb7549 100644 --- a/pkg/server/socket/socket.go +++ b/pkg/server/socket/socket.go @@ -14,8 +14,12 @@ import ( var errAlreadyClosed = errors.New("already closed") +type exportChannel struct { + info string + Channel +} + type Channel interface { - Origin() string Send(wq queue.Q) error Recv(rq queue.Q) error Close() error @@ -36,7 +40,6 @@ type dialSocket struct { } type connChannel struct { - origin string conn net.Conn once sync.Once } @@ -47,8 +50,12 @@ type loopChannel struct { q queue.Q } -func newConnChannel(origin string, conn net.Conn) Channel { - return &connChannel{origin: origin, conn: conn} +func (c exportChannel) String() string { + return c.info +} + +func newConnChannel(conn net.Conn) Channel { + return &connChannel{conn: conn} } func (c *connChannel) final(f func() error, err error) error { @@ -63,10 +70,6 @@ func (c *connChannel) final(f func() error, err error) error { return err } -func (c *connChannel) Origin() string { - return c.origin -} - func (c *connChannel) Send(wq queue.Q) error { err := queue.IoCopy(c.conn, wq.Writer()) return c.final(c.Close, err) @@ -121,9 +124,9 @@ func (s *listenSocket) Open(env env.Env) (Channel, error) { } addr := conn.RemoteAddr() - origin := fmt.Sprintf("%s/%s", addr.Network(), addr) + info := fmt.Sprintf("%s/%s", addr.Network(), addr) - return newConnChannel(origin, conn), nil + return exportChannel{info, newConnChannel(conn)}, nil } func (s *listenSocket) String() string { @@ -154,16 +157,12 @@ func (s *dialSocket) Open(env env.Env) (Channel, error) { if err != nil { return nil, err } - return newConnChannel("-", conn), nil + return exportChannel{"-", newConnChannel(conn)}, nil } func (s *dialSocket) Close() { } -func (c *loopChannel) Origin() string { - return "loop" -} - func (c *loopChannel) Send(wq queue.Q) error { return queue.Copy(c.q, wq) } |
