()
| 335 | } |
| 336 | |
| 337 | func (p *Pool) Close() error { |
| 338 | p.mu.Lock() |
| 339 | defer p.mu.Unlock() |
| 340 | if p.closed { |
| 341 | return nil |
| 342 | } |
| 343 | p.closed = true |
| 344 | close(p.exit.C) |
| 345 | |
| 346 | for addr, list := range p.pool { |
| 347 | for i := list.Len(); i != 0; i-- { |
| 348 | c := list.Remove(list.Front()).(*Client) |
| 349 | c.Close() |
| 350 | } |
| 351 | delete(p.pool, addr) |
| 352 | } |
| 353 | return nil |
| 354 | } |
| 355 | |
| 356 | func (p *Pool) Cleanup() error { |
| 357 | p.mu.Lock() |