MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / loadDataPartsForRead

Method loadDataPartsForRead

pkg/filestore/blockstore_cache.go:289–315  ·  view source on GitHub ↗
(ctx context.Context, parts []int)

Source from the content-addressed store, hash-verified

287}
288
289func (entry *CacheEntry) loadDataPartsForRead(ctx context.Context, parts []int) (map[int]*DataCacheEntry, error) {
290 if len(parts) == 0 {
291 return nil, nil
292 }
293 dbParts := prunePartsWithCache(entry.DataEntries, parts)
294 var dbDataParts map[int]*DataCacheEntry
295 if len(dbParts) > 0 {
296 var err error
297 dbDataParts, err = dbGetFileParts(ctx, entry.ZoneId, entry.Name, dbParts)
298 if err != nil {
299 return nil, fmt.Errorf("error getting data parts: %w", err)
300 }
301 }
302 rtn := make(map[int]*DataCacheEntry)
303 for _, partIdx := range parts {
304 if entry.DataEntries[partIdx] != nil {
305 rtn[partIdx] = entry.DataEntries[partIdx]
306 continue
307 }
308 if dbDataParts[partIdx] != nil {
309 rtn[partIdx] = dbDataParts[partIdx]
310 continue
311 }
312 // part not found
313 }
314 return rtn, nil
315}
316
317func makeCacheEntry(zoneId string, name string) *CacheEntry {
318 return &CacheEntry{

Callers 1

readAtMethod · 0.95

Calls 2

prunePartsWithCacheFunction · 0.85
dbGetFilePartsFunction · 0.85

Tested by

no test coverage detected