MCPcopy Index your code
hub / github.com/CodisLabs/codis / handleRequestMGet

Method handleRequestMGet

pkg/proxy/session.go:387–425  ·  view source on GitHub ↗
(r *Request, d *Router)

Source from the content-addressed store, hash-verified

385}
386
387func (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
427func (s *Session) handleRequestMSet(r *Request, d *Router) error {
428 var nblks = len(r.Multi) - 1

Callers 1

handleRequestMethod · 0.95

Calls 4

MakeSubRequestMethod · 0.80
IsArrayMethod · 0.80
ErrorfMethod · 0.80
dispatchMethod · 0.45

Tested by

no test coverage detected