Documentation ¶
Overview ¶
package connlimit provides control over simultaneous connections coming from the same source
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConnErrHandler ¶
type ConnErrHandler struct { }
func (*ConnErrHandler) ServeHTTP ¶
func (e *ConnErrHandler) ServeHTTP(w http.ResponseWriter, req *http.Request, err error)
type ConnLimitOption ¶
type ConnLimitOption func(l *ConnLimiter) error
func ErrorHandler ¶
func ErrorHandler(h utils.ErrorHandler) ConnLimitOption
ErrorHandler sets error handler of the server
func Logger ¶
func Logger(l utils.Logger) ConnLimitOption
Logger sets the logger that will be used by this middleware.
type ConnLimiter ¶
type ConnLimiter struct {
// contains filtered or unexported fields
}
ConnLimiter tracks concurrent connection per token and is capable of rejecting connections if they are failed
func New ¶
func New(next http.Handler, extract utils.SourceExtractor, maxConnections int64, options ...ConnLimitOption) (*ConnLimiter, error)
New returns a new connection limiter
func (*ConnLimiter) Acquire ¶
func (cl *ConnLimiter) Acquire(token string, amount int64) error
Acquire tries to acquire connections for a token
func (*ConnLimiter) Release ¶
func (cl *ConnLimiter) Release(token string, amount int64)
Release releases connections for token
func (*ConnLimiter) ServeHTTP ¶
func (cl *ConnLimiter) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP reserves a connection, sends requests to handler and releases the connection
type MaxConnError ¶
type MaxConnError struct {
// contains filtered or unexported fields
}
func (*MaxConnError) Error ¶
func (m *MaxConnError) Error() string
Click to show internal directories.
Click to hide internal directories.