diff options
Diffstat (limited to 'Godeps/_workspace/src/github.com/braintree/manners/listener.go')
-rw-r--r-- | Godeps/_workspace/src/github.com/braintree/manners/listener.go | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/Godeps/_workspace/src/github.com/braintree/manners/listener.go b/Godeps/_workspace/src/github.com/braintree/manners/listener.go deleted file mode 100644 index dd84e4a2e..000000000 --- a/Godeps/_workspace/src/github.com/braintree/manners/listener.go +++ /dev/null @@ -1,49 +0,0 @@ -package manners - -import ( - "net" - "sync" -) - -func NewListener(l net.Listener, s *GracefulServer) *GracefulListener { - return &GracefulListener{l, true, s, sync.RWMutex{}} -} - -// A GracefulListener differs from a standard net.Listener in one way: if -// Accept() is called after it is gracefully closed, it returns a -// listenerAlreadyClosed error. The GracefulServer will ignore this -// error. -type GracefulListener struct { - net.Listener - open bool - server *GracefulServer - rw sync.RWMutex -} - -func (l *GracefulListener) Accept() (net.Conn, error) { - conn, err := l.Listener.Accept() - if err != nil { - l.rw.RLock() - defer l.rw.RUnlock() - if !l.open { - err = listenerAlreadyClosed{err} - } - return nil, err - } - return conn, nil -} - -func (l *GracefulListener) Close() error { - l.rw.Lock() - defer l.rw.Unlock() - if !l.open { - return nil - } - l.open = false - err := l.Listener.Close() - return err -} - -type listenerAlreadyClosed struct { - error -} |