NewPool creates a new Pool.
(clientName string, cfg PoolConfig, discovery PoolServiceDiscovery, factory PoolFactory, clientsMetric prometheus.Gauge, logger log.Logger)
| 58 | |
| 59 | // NewPool creates a new Pool. |
| 60 | func NewPool(clientName string, cfg PoolConfig, discovery PoolServiceDiscovery, factory PoolFactory, clientsMetric prometheus.Gauge, logger log.Logger) *Pool { |
| 61 | p := &Pool{ |
| 62 | cfg: cfg, |
| 63 | discovery: discovery, |
| 64 | factory: factory, |
| 65 | logger: logger, |
| 66 | clientName: clientName, |
| 67 | clients: map[string]PoolClient{}, |
| 68 | clientsMetric: clientsMetric, |
| 69 | } |
| 70 | |
| 71 | p.Service = services. |
| 72 | NewTimerService(cfg.CheckInterval, nil, p.iteration, nil). |
| 73 | WithName(fmt.Sprintf("%s client pool", p.clientName)) |
| 74 | return p |
| 75 | } |
| 76 | |
| 77 | func (p *Pool) iteration(ctx context.Context) error { |
| 78 | p.removeStaleClients() |