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