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

Method readReply

search_commands.go:2152–2211  ·  view source on GitHub ↗
(rd *proto.Reader)

Source from the content-addressed store, hash-verified

2150 return cmd.rawVal, cmd.err
2151}
2152func (cmd *FTInfoCmd) readReply(rd *proto.Reader) (err error) {
2153 readType, err := rd.PeekReplyType()
2154 if err != nil {
2155 return err
2156 }
2157
2158 // RESP3 returns a map, RESP2 returns an array
2159 if readType == proto.RespMap {
2160 // Read raw response first for backwards compatibility
2161 cmd.rawVal, err = rd.ReadReply()
2162 if err != nil {
2163 return err
2164 }
2165
2166 // Convert map[interface{}]interface{} to map[string]interface{}
2167 rawMap, ok := cmd.rawVal.(map[interface{}]interface{})
2168 if !ok {
2169 return fmt.Errorf("unexpected RESP3 response type: %T", cmd.rawVal)
2170 }
2171
2172 data := make(map[string]interface{}, len(rawMap))
2173 for k, v := range rawMap {
2174 if kStr, ok := k.(string); ok {
2175 data[kStr] = v
2176 }
2177 }
2178
2179 cmd.val, err = parseFTInfo(data)
2180 return err
2181 }
2182
2183 // RESP2 format - read as map
2184 n, err := rd.ReadMapLen()
2185 if err != nil {
2186 return err
2187 }
2188
2189 data := make(map[string]interface{}, n)
2190 for i := 0; i < n; i++ {
2191 k, err := rd.ReadString()
2192 if err != nil {
2193 return err
2194 }
2195 v, err := rd.ReadReply()
2196 if err != nil {
2197 if err == Nil {
2198 data[k] = Nil
2199 continue
2200 }
2201 if err, ok := err.(proto.RedisError); ok {
2202 data[k] = err
2203 continue
2204 }
2205 return err
2206 }
2207 data[k] = v
2208 }
2209 cmd.val, err = parseFTInfo(data)

Callers

nothing calls this directly

Calls 5

parseFTInfoFunction · 0.85
PeekReplyTypeMethod · 0.80
ReadReplyMethod · 0.80
ReadMapLenMethod · 0.80
ReadStringMethod · 0.80

Tested by

no test coverage detected