package socket import ( "tunnel/pkg/server/env" "tunnel/pkg/server/queue" ) type loopSocket struct{} type loopConn struct { c chan queue.Q q chan error } func (c *loopConn) Send(wq queue.Q) error { c.c <- wq return <-c.q } func (c *loopConn) Recv(rq queue.Q) error { defer close(c.q) return queue.Copy(rq, <-c.c) } func (c *loopConn) String() string { return "loop" } func (c *loopConn) Close() error { return nil } func (s *loopSocket) New(env.Env) (Conn, error) { return &loopConn{make(chan queue.Q), make(chan error)}, nil } func (s *loopSocket) String() string { return "loop" } func (s *loopSocket) Close() { } func init() { register("loop", loopSocket{}) }