mirror of https://github.com/mindoc-org/mindoc.git
29 lines
388 B
Go
29 lines
388 B
Go
|
package grace
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
type graceConn struct {
|
||
|
net.Conn
|
||
|
server *Server
|
||
|
}
|
||
|
|
||
|
func (c graceConn) Close() (err error) {
|
||
|
defer func() {
|
||
|
if r := recover(); r != nil {
|
||
|
switch x := r.(type) {
|
||
|
case string:
|
||
|
err = errors.New(x)
|
||
|
case error:
|
||
|
err = x
|
||
|
default:
|
||
|
err = errors.New("Unknown panic")
|
||
|
}
|
||
|
}
|
||
|
}()
|
||
|
c.server.wg.Done()
|
||
|
return c.Conn.Close()
|
||
|
}
|