NewPool creates a new Pool.
(clientName string, cfg PoolConfig, discovery PoolServiceDiscovery, factory PoolFactory, clientsMetric prometheus.Gauge, logger log.Logger)
| 94 | |
| 95 | // NewPool creates a new Pool. |
| 96 | func NewPool(clientName string, cfg PoolConfig, discovery PoolServiceDiscovery, factory PoolFactory, clientsMetric prometheus.Gauge, logger log.Logger) *Pool { |
| 97 | if cfg.MaxConcurrentHealthChecks == 0 { |
| 98 | cfg.MaxConcurrentHealthChecks = 16 |
| 99 | } |
| 100 | |
| 101 | p := &Pool{ |
| 102 | cfg: cfg, |
| 103 | discovery: discovery, |
| 104 | factory: factory, |
| 105 | logger: logger, |
| 106 | clientName: clientName, |
| 107 | members: map[string]*poolMember{}, |
| 108 | clientsMetric: clientsMetric, |
| 109 | } |
| 110 | |
| 111 | p.Service = services. |
| 112 | NewTimerService(cfg.CheckInterval, nil, p.iteration, nil). |
| 113 | WithName(fmt.Sprintf("%s client pool", p.clientName)) |
| 114 | return p |
| 115 | } |
| 116 | |
| 117 | func (p *Pool) iteration(_ context.Context) error { |
| 118 | p.removeStaleClients() |