mirror of
https://github.com/prometheus/prometheus
synced 2024-12-27 17:13:22 +00:00
Vendor x/net/netutil
This commit is contained in:
parent
e487477a17
commit
2260079c12
48
vendor/golang.org/x/net/netutil/listen.go
generated
vendored
Normal file
48
vendor/golang.org/x/net/netutil/listen.go
generated
vendored
Normal 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
6
vendor/vendor.json
vendored
@ -695,6 +695,12 @@
|
|||||||
"revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3",
|
"revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3",
|
||||||
"revisionTime": "2016-09-30T00:14:02Z"
|
"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=",
|
"checksumSHA1": "mktBVED98G2vv+OKcSgtnFVZC1Y=",
|
||||||
"path": "golang.org/x/oauth2",
|
"path": "golang.org/x/oauth2",
|
||||||
|
Loading…
Reference in New Issue
Block a user