update Listener interface

This commit is contained in:
ginuerzh
2022-03-15 10:23:57 +08:00
parent 42f72adde0
commit 2e40afe535
12 changed files with 73 additions and 279 deletions

View File

@ -14,7 +14,9 @@ var (
// Listener is a server listener, just like a net.Listener.
type Listener interface {
Init(metadata.Metadata) error
net.Listener
Accept() (net.Conn, metadata.Metadata, error)
Addr() net.Addr
Close() error
}
type AcceptError struct {

View File

@ -57,10 +57,10 @@ func (l *rtcpListener) Init(md md.Metadata) (err error) {
return
}
func (l *rtcpListener) Accept() (conn net.Conn, err error) {
func (l *rtcpListener) Accept() (conn net.Conn, md md.Metadata, err error) {
select {
case <-l.closed:
return nil, net.ErrClosed
return nil, nil, net.ErrClosed
default:
}
@ -70,7 +70,7 @@ func (l *rtcpListener) Accept() (conn net.Conn, err error) {
connector.MuxBindOption(true),
)
if err != nil {
return nil, listener.NewAcceptError(err)
return nil, nil, listener.NewAcceptError(err)
}
l.ln = metrics.WrapListener(l.options.Service, l.ln)
}
@ -78,7 +78,7 @@ func (l *rtcpListener) Accept() (conn net.Conn, err error) {
if err != nil {
l.ln.Close()
l.ln = nil
return nil, listener.NewAcceptError(err)
return nil, nil, listener.NewAcceptError(err)
}
return
}

View File

@ -57,10 +57,10 @@ func (l *rudpListener) Init(md md.Metadata) (err error) {
return
}
func (l *rudpListener) Accept() (conn net.Conn, err error) {
func (l *rudpListener) Accept() (conn net.Conn, md md.Metadata, err error) {
select {
case <-l.closed:
return nil, net.ErrClosed
return nil, nil, net.ErrClosed
default:
}
@ -73,14 +73,14 @@ func (l *rudpListener) Accept() (conn net.Conn, err error) {
connector.UDPDataQueueSizeBindOption(l.md.readQueueSize),
)
if err != nil {
return nil, listener.NewAcceptError(err)
return nil, nil, listener.NewAcceptError(err)
}
}
conn, err = l.ln.Accept()
if err != nil {
l.ln.Close()
l.ln = nil
return nil, listener.NewAcceptError(err)
return nil, nil, listener.NewAcceptError(err)
}
if pc, ok := conn.(net.PacketConn); ok {

View File

@ -15,7 +15,7 @@ func init() {
}
type tcpListener struct {
net.Listener
ln net.Listener
logger logger.Logger
md metadata
options listener.Options
@ -42,8 +42,20 @@ func (l *tcpListener) Init(md md.Metadata) (err error) {
return
}
ln = metrics.WrapListener(l.options.Service, ln)
l.Listener = ln
l.ln = metrics.WrapListener(l.options.Service, ln)
return
}
func (l *tcpListener) Accept() (conn net.Conn, md md.Metadata, err error) {
conn, err = l.ln.Accept()
return
}
func (l *tcpListener) Addr() net.Addr {
return l.ln.Addr()
}
func (l *tcpListener) Close() error {
return l.ln.Close()
}

View File

@ -17,7 +17,7 @@ func init() {
}
type tlsListener struct {
net.Listener
ln net.Listener
logger logger.Logger
md metadata
options listener.Options
@ -46,7 +46,20 @@ func (l *tlsListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
l.Listener = tls.NewListener(ln, l.options.TLSConfig)
l.ln = tls.NewListener(ln, l.options.TLSConfig)
return
}
func (l *tlsListener) Accept() (conn net.Conn, md md.Metadata, err error) {
conn, err = l.ln.Accept()
return
}
func (l *tlsListener) Addr() net.Addr {
return l.ln.Addr()
}
func (l *tlsListener) Close() error {
return l.ln.Close()
}

View File

@ -16,7 +16,7 @@ func init() {
}
type udpListener struct {
net.Listener
ln net.Listener
logger logger.Logger
md metadata
options listener.Options
@ -50,7 +50,7 @@ func (l *udpListener) Init(md md.Metadata) (err error) {
}
conn = metrics.WrapPacketConn(l.options.Service, conn)
l.Listener = udp.NewListener(
l.ln = udp.NewListener(
conn,
laddr,
l.md.backlog,
@ -59,3 +59,16 @@ func (l *udpListener) Init(md md.Metadata) (err error) {
l.logger)
return
}
func (l *udpListener) Accept() (conn net.Conn, md md.Metadata, err error) {
conn, err = l.ln.Accept()
return
}
func (l *udpListener) Addr() net.Addr {
return l.ln.Addr()
}
func (l *udpListener) Close() error {
return l.ln.Close()
}