(r *Request, d *Router)
| 385 | } |
| 386 | |
| 387 | func (s *Session) handleRequestMGet(r *Request, d *Router) error { |
| 388 | var nkeys = len(r.Multi) - 1 |
| 389 | switch { |
| 390 | case nkeys == 0: |
| 391 | r.Resp = redis.NewErrorf("ERR wrong number of arguments for 'MGET' command") |
| 392 | return nil |
| 393 | case nkeys == 1: |
| 394 | return d.dispatch(r) |
| 395 | } |
| 396 | var sub = r.MakeSubRequest(nkeys) |
| 397 | for i := range sub { |
| 398 | sub[i].Multi = []*redis.Resp{ |
| 399 | r.Multi[0], |
| 400 | r.Multi[i+1], |
| 401 | } |
| 402 | if err := d.dispatch(&sub[i]); err != nil { |
| 403 | return err |
| 404 | } |
| 405 | } |
| 406 | r.Coalesce = func() error { |
| 407 | var array = make([]*redis.Resp, len(sub)) |
| 408 | for i := range sub { |
| 409 | if err := sub[i].Err; err != nil { |
| 410 | return err |
| 411 | } |
| 412 | switch resp := sub[i].Resp; { |
| 413 | case resp == nil: |
| 414 | return ErrRespIsRequired |
| 415 | case resp.IsArray() && len(resp.Array) == 1: |
| 416 | array[i] = resp.Array[0] |
| 417 | default: |
| 418 | return fmt.Errorf("bad mget resp: %s array.len = %d", resp.Type, len(resp.Array)) |
| 419 | } |
| 420 | } |
| 421 | r.Resp = redis.NewArray(array) |
| 422 | return nil |
| 423 | } |
| 424 | return nil |
| 425 | } |
| 426 | |
| 427 | func (s *Session) handleRequestMSet(r *Request, d *Router) error { |
| 428 | var nblks = len(r.Multi) - 1 |
no test coverage detected