Vendor x/net/netutil

This commit is contained in:
Erdem Agaoglu 2016-12-06 12:52:02 +03:00
parent e487477a17
commit 2260079c12
2 changed files with 54 additions and 0 deletions

48
vendor/golang.org/x/net/netutil/listen.go generated vendored Normal file
View File

@ -0,0 +1,48 @@
// Copyright 2013 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package netutil provides network utility functions, complementing the more
// common ones in the net package.
package netutil // import "golang.org/x/net/netutil"
import (
"net"
"sync"
)
// LimitListener returns a Listener that accepts at most n simultaneous
// connections from the provided Listener.
func LimitListener(l net.Listener, n int) net.Listener {
return &limitListener{l, make(chan struct{}, n)}
}
type limitListener struct {
net.Listener
sem chan struct{}
}
func (l *limitListener) acquire() { l.sem <- struct{}{} }
func (l *limitListener) release() { <-l.sem }
func (l *limitListener) Accept() (net.Conn, error) {
l.acquire()
c, err := l.Listener.Accept()
if err != nil {
l.release()
return nil, err
}
return &limitListenerConn{Conn: c, release: l.release}, nil
}
type limitListenerConn struct {
net.Conn
releaseOnce sync.Once
release func()
}
func (l *limitListenerConn) Close() error {
err := l.Conn.Close()
l.releaseOnce.Do(l.release)
return err
}

6
vendor/vendor.json vendored
View File

@ -695,6 +695,12 @@
"revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3",
"revisionTime": "2016-09-30T00:14:02Z"
},
{
"checksumSHA1": "7WASrg0PEueWDDRHkFhEEN6Qrms=",
"path": "golang.org/x/net/netutil",
"revision": "bc3663df0ac92f928d419e31e0d2af22e683a5a2",
"revisionTime": "2016-06-21T20:48:10Z"
},
{
"checksumSHA1": "mktBVED98G2vv+OKcSgtnFVZC1Y=",
"path": "golang.org/x/oauth2",