summaryrefslogtreecommitdiff
path: root/pkg/server/socket/socket.go
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2020-03-08 01:33:06 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2020-03-08 01:33:06 +0300
commit45009e12dd8c8dda711c08f91bc8f6c925966d93 (patch)
tree1c9efeaa980b2c3a16779b591cda56d2aae5f86f /pkg/server/socket/socket.go
parentc83b04c10c3d1126f295a72f9e6d96bf1924238a (diff)
mono, force and simpler channels
Diffstat (limited to 'pkg/server/socket/socket.go')
-rw-r--r--pkg/server/socket/socket.go29
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)
}