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