2023-05-31 20:24:07 +02:00

43 lines
782 B
Go

package yamux
import (
"context"
"github.com/anyproto/any-sync/net/connutil"
"github.com/anyproto/any-sync/net/transport"
"github.com/hashicorp/yamux"
"net"
"time"
)
type yamuxConn struct {
ctx context.Context
luConn *connutil.LastUsageConn
addr string
*yamux.Session
}
func (y *yamuxConn) Open(ctx context.Context) (conn net.Conn, err error) {
return y.Session.Open()
}
func (y *yamuxConn) LastUsage() time.Time {
return y.luConn.LastUsage()
}
func (y *yamuxConn) Context() context.Context {
return y.ctx
}
func (y *yamuxConn) Addr() string {
return y.addr
}
func (y *yamuxConn) Accept() (conn net.Conn, err error) {
if conn, err = y.Session.Accept(); err != nil {
if err == yamux.ErrSessionShutdown {
err = transport.ErrConnClosed
}
}
return
}