MCPcopy
hub / github.com/redis/go-redis / readReply

Method readReply

command.go:8409–8466  ·  view source on GitHub ↗
(rd *proto.Reader)

Source from the content-addressed store, hash-verified

8407}
8408
8409func (cmd *VectorScoreAttribSliceCmd) readReply(rd *proto.Reader) error {
8410 replyType, err := rd.PeekReplyType()
8411 if err != nil {
8412 return err
8413 }
8414
8415 if replyType == proto.RespMap {
8416 n, err := rd.ReadMapLen()
8417 if err != nil {
8418 return err
8419 }
8420 cmd.val = make([]VectorScoreAttrib, n)
8421 for i := 0; i < n; i++ {
8422 name, err := rd.ReadString()
8423 if err != nil {
8424 return err
8425 }
8426 if err := rd.ReadFixedArrayLen(2); err != nil {
8427 return err
8428 }
8429 score, err := rd.ReadFloat()
8430 if err != nil {
8431 return err
8432 }
8433 attrib, err := readVectorAttribStringOrNil(rd)
8434 if err != nil {
8435 return err
8436 }
8437 cmd.val[i] = VectorScoreAttrib{Name: name, Score: score, Attribs: attrib}
8438 }
8439 return nil
8440 }
8441
8442 n, err := rd.ReadArrayLen()
8443 if err != nil {
8444 return err
8445 }
8446 if n%3 != 0 {
8447 return fmt.Errorf("redis: got %d elements in the VSIM array, wanted a multiple of 3", n)
8448 }
8449 cmd.val = make([]VectorScoreAttrib, n/3)
8450 for i := range cmd.val {
8451 name, err := rd.ReadString()
8452 if err != nil {
8453 return err
8454 }
8455 score, err := rd.ReadFloat()
8456 if err != nil {
8457 return err
8458 }
8459 attrib, err := readVectorAttribStringOrNil(rd)
8460 if err != nil {
8461 return err
8462 }
8463 cmd.val[i] = VectorScoreAttrib{Name: name, Score: score, Attribs: attrib}
8464 }
8465 return nil
8466}

Calls 7

PeekReplyTypeMethod · 0.80
ReadMapLenMethod · 0.80
ReadStringMethod · 0.80
ReadFixedArrayLenMethod · 0.80
ReadFloatMethod · 0.80
ReadArrayLenMethod · 0.80

Tested by 1