2016-08-15 06:16:54 -04:00
|
|
|
package ws
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"net"
|
|
|
|
)
|
|
|
|
|
|
|
|
type StoppableListener struct {
|
2016-08-15 09:36:37 -04:00
|
|
|
net.Listener //Wrapped listener
|
2016-08-15 06:16:54 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
func NewStoppableListener(l net.Listener) (*StoppableListener, error) {
|
|
|
|
|
|
|
|
retval := &StoppableListener{}
|
2016-08-15 09:19:15 -04:00
|
|
|
retval.Listener = l
|
2016-08-15 06:16:54 -04:00
|
|
|
return retval, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
var StoppedError = errors.New("Listener stopped")
|
|
|
|
|
|
|
|
func (sl *StoppableListener) Accept() (net.Conn, error) {
|
2016-08-15 09:36:37 -04:00
|
|
|
newConn, err := sl.Listener.Accept()
|
|
|
|
return newConn, err
|
2016-08-15 06:16:54 -04:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func (sl *StoppableListener) Stop() {
|
2016-08-15 09:36:37 -04:00
|
|
|
sl.Listener.Close()
|
2016-08-15 06:16:54 -04:00
|
|
|
}
|