(item *Item, fn func(*Client, *bufio.ReadWriter, *Item) error)
| 311 | } |
| 312 | |
| 313 | func (c *Client) onItem(item *Item, fn func(*Client, *bufio.ReadWriter, *Item) error) error { |
| 314 | addr, err := c.selector.PickServer(item.Key) |
| 315 | if err != nil { |
| 316 | return err |
| 317 | } |
| 318 | cn, err := c.getConn(addr) |
| 319 | if err != nil { |
| 320 | return err |
| 321 | } |
| 322 | defer cn.condRelease(&err) |
| 323 | if err = fn(c, cn.rw, item); err != nil { |
| 324 | return err |
| 325 | } |
| 326 | return nil |
| 327 | } |
| 328 | |
| 329 | func (c *Client) FlushAll() error { |
| 330 | return c.selector.Each(c.flushAllFromAddr) |