MCPcopy
hub / github.com/cubefs/cubefs / GetAllDentry

Method GetAllDentry

cli/api/metaapi.go:215–251  ·  view source on GitHub ↗
(pid uint64)

Source from the content-addressed store, hash-verified

213}
214
215func (mc *MetaHttpClient) GetAllDentry(pid uint64) (dentryMap map[string]*metanode.Dentry, err error) {
216 defer func() {
217 if err != nil {
218 log.LogErrorf("action[GetAllDentry],pid:%v,err:%v", pid, err)
219 }
220 }()
221 dentryMap = make(map[string]*metanode.Dentry)
222 request := newAPIRequest(http.MethodGet, "/getAllDentry")
223 request.params["pid"] = fmt.Sprintf("%v", pid)
224 respData, err := mc.serveRequest(request)
225 log.LogInfof("err:%v,respData:%v\n", err, string(respData))
226 if err != nil {
227 return
228 }
229
230 dec := json.NewDecoder(bytes.NewBuffer(respData))
231 dec.UseNumber()
232
233 // It's the "items". We expect it to be an array
234 if err = parseToken(dec, '['); err != nil {
235 return
236 }
237 // Read items (large objects)
238 for dec.More() {
239 // Read next item (large object)
240 lo := &metanode.Dentry{}
241 if err = dec.Decode(lo); err != nil {
242 return
243 }
244 dentryMap[fmt.Sprintf("%v_%v", lo.ParentId, lo.Name)] = lo
245 }
246 // Array closing delimiter
247 if err = parseToken(dec, ']'); err != nil {
248 return
249 }
250 return
251}
252
253func parseToken(dec *json.Decoder, expectToken rune) (err error) {
254 t, err := dec.Token()

Callers 1

verifyDentryFunction · 0.80

Calls 6

serveRequestMethod · 0.95
DecodeMethod · 0.95
LogErrorfFunction · 0.92
LogInfofFunction · 0.92
parseTokenFunction · 0.85
newAPIRequestFunction · 0.70

Tested by

no test coverage detected