1package pool 2 3import "context" 4 5type SingleConnPool struct { 6 pool Pooler 7 cn *Conn 8 stickyErr error 9} 10 11var _ Pooler = (*SingleConnPool)(nil) 12 13func NewSingleConnPool(pool Pooler, cn *Conn) *SingleConnPool { 14 return &SingleConnPool{ 15 pool: pool, 16 cn: cn, 17 } 18} 19 20func (p *SingleConnPool) NewConn(ctx context.Context) (*Conn, error) { 21 return p.pool.NewConn(ctx) 22} 23 24func (p *SingleConnPool) CloseConn(cn *Conn) error { 25 return p.pool.CloseConn(cn) 26} 27 28func (p *SingleConnPool) Get(ctx context.Context) (*Conn, error) { 29 if p.stickyErr != nil { 30 return nil, p.stickyErr 31 } 32 return p.cn, nil 33} 34 35func (p *SingleConnPool) Put(ctx context.Context, cn *Conn) {} 36 37func (p *SingleConnPool) Remove(ctx context.Context, cn *Conn, reason error) { 38 p.cn = nil 39 p.stickyErr = reason 40} 41 42func (p *SingleConnPool) Close() error { 43 p.cn = nil 44 p.stickyErr = ErrClosed 45 return nil 46} 47 48func (p *SingleConnPool) Len() int { 49 return 0 50} 51 52func (p *SingleConnPool) IdleLen() int { 53 return 0 54} 55 56func (p *SingleConnPool) Stats() *Stats { 57 return &Stats{} 58} 59