blob: 5a3fde191bbbc90a57808a5466375a5e833095c7 [file] [log] [blame]
Joey Armstronga6af1522023-01-17 16:06:16 -05001package 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}