// Package pool implements a pool of net.Conn interfaces to manage and reuse them. package pool import ( "errors" "net" ) var ( // ErrClosed is the error resulting if the pool is closed via pool.Close(). ErrClosed = errors.New("pool is closed") ) // Pool interface describes a pool implementation. A pool should have maximum // capacity. An ideal pool is threadsafe and easy to use. type Pool interface { // Get returns a new connection from the pool. Closing the connections puts // it back to the Pool. Closing it when the pool is destroyed or full will // be counted as an error. Get() (net.Conn, error) // Close closes the pool and all its connections. After Close() the pool is // no longer usable. Close() // Len returns the current number of connections of the pool. Len() int }