Skip to content

go/golang connpool,连接池,可以TCP连接复用,使用方法和 net.Dialer 接口是相同。

License

Notifications You must be signed in to change notification settings

456vv/vconnpool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vconnpool Build Status

golang vconnpool,可以TCP连接复用,使用方法和 net.Dialer 接口是相同。

列表:

type Dialer interface {                                                 // net.Dialer 接口
    Dial(network, address string) (net.Conn, error)                             // 拨号
    DialContext(ctx context.Context, network, address string) (net.Conn, error) // 拨号(支持上下文)
}
type Conn interface{                                                    // 连接接口
    net.Conn                                                                    // net连接接口
    Discard() error                                                             // 废弃(这条连接不再回收)
    IsReuseConn() bool                                                          // 判断这条连接是否是从池中读取出来的
    RawConn() net.Conn                                                          // 原始连接,这个连接使用 Close 关闭后,不会回收
}
type ConnPool struct {                                                          // 连接池
    Dialer                                                                 // 拨号
    Host        func(oldAddress string) (newAddress string)                     // 拨号地址变更
    IdeConn     int                                                             // 空闲连接数,0为不复用连接
    MaxConn     int                                                             // 最大连接数,0为无限制连接
    IdeTimeout  time.Duration                                                   // 空闲自动超时,0为不超时
}
    func (T *ConnPool) Dial(network, address string) (net.Conn, error)         // 拨号,如果 address 参数是host域名,.Get(...)将无法读取到连接。请再次使用 .Dial(...) 来读取。
    func (T *ConnPool) DialContext(ctx context.Context, network, address string) (net.Conn, error) //拨号(支持上下文),如果 address 参数是host域名,.Get(...)将无法读取到连接。请再次使用 .Dial(...) 来读取。
    func (T *ConnPool) Add(conn net.Conn) error                                // 增加连接
    func (T *ConnPool) Put(conn net.Conn, addr net.Addr) error                 // 增加连接,支持 addr
    func (T *ConnPool) Get(addr net.Addr) (net.Conn, error)                    // 读取连接,读取出来的连接不会自动回收,需要调用 .Add(...) 收入
    func (T *ConnPool) ConnNum() int                                           // 当前连接数量
    func (T *ConnPool) ConnNumIde(network, address string) int                 // 当前连接数量(空闲),不是实时的空闲连接数,存在多线程!
    func (T *ConnPool) CloseIdleConnections()                                  // 关闭空闲连接
    func (T *ConnPool) Close() error                                           // 关闭连接池

About

go/golang connpool,连接池,可以TCP连接复用,使用方法和 net.Dialer 接口是相同。

Resources

License

Stars

Watchers

Forks

Languages