update Listener interface
This commit is contained in:
@ -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 {
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
|
Reference in New Issue
Block a user