(client *Client, names []string)
| 239 | } |
| 240 | |
| 241 | func (s *Sentinel) slavesCommand(client *Client, names []string) (map[string][]map[string]string, error) { |
| 242 | exists, err := s.existsCommand(client, names) |
| 243 | if err != nil { |
| 244 | return nil, err |
| 245 | } |
| 246 | go func() { |
| 247 | var pending int |
| 248 | for _, name := range names { |
| 249 | if !exists[name] { |
| 250 | continue |
| 251 | } |
| 252 | pending++ |
| 253 | client.Send("SENTINEL", "slaves", name) |
| 254 | } |
| 255 | if pending != 0 { |
| 256 | client.Flush() |
| 257 | } |
| 258 | }() |
| 259 | results := make(map[string][]map[string]string, len(names)) |
| 260 | for _, name := range names { |
| 261 | if !exists[name] { |
| 262 | continue |
| 263 | } |
| 264 | values, err := redigo.Values(client.Receive()) |
| 265 | if err != nil { |
| 266 | return nil, errors.Trace(err) |
| 267 | } |
| 268 | var slaves []map[string]string |
| 269 | for i := range values { |
| 270 | m, err := redigo.StringMap(values[i], nil) |
| 271 | if err != nil { |
| 272 | return nil, errors.Trace(err) |
| 273 | } |
| 274 | slaves = append(slaves, m) |
| 275 | } |
| 276 | results[name] = slaves |
| 277 | } |
| 278 | return results, nil |
| 279 | } |
| 280 | |
| 281 | func (s *Sentinel) mastersCommand(client *Client) (map[int]map[string]string, error) { |
| 282 | values, err := redigo.Values(client.Do("SENTINEL", "masters")) |
no test coverage detected