MCPcopy
hub / github.com/wavetermdev/waveterm / computePartMap

Method computePartMap

pkg/filestore/blockstore.go:456–475  ·  view source on GitHub ↗

returns a map of partIdx to amount of data to write to that part

(startOffset int64, size int64)

Source from the content-addressed store, hash-verified

454
455// returns a map of partIdx to amount of data to write to that part
456func (file *WaveFile) computePartMap(startOffset int64, size int64) map[int]int {
457 partMap := make(map[int]int)
458 endOffset := startOffset + size
459 startFileOffset := startOffset - (startOffset % partDataSize)
460 for testOffset := startFileOffset; testOffset < endOffset; testOffset += partDataSize {
461 partIdx := file.partIdxAtOffset(testOffset)
462 partStartOffset := testOffset
463 partEndOffset := testOffset + partDataSize
464 partWriteStartOffset := 0
465 partWriteEndOffset := int(partDataSize)
466 if startOffset > partStartOffset && startOffset < partEndOffset {
467 partWriteStartOffset = int(startOffset - partStartOffset)
468 }
469 if endOffset > partStartOffset && endOffset < partEndOffset {
470 partWriteEndOffset = int(endOffset - partStartOffset)
471 }
472 partMap[partIdx] = partWriteEndOffset - partWriteStartOffset
473 }
474 return partMap
475}
476
477func (s *FileStore) getDirtyCacheKeys() []cacheKey {
478 s.Lock.Lock()

Callers 5

TestComputePartMapFunction · 0.95
readAtMethod · 0.80
WriteAtMethod · 0.80
AppendDataMethod · 0.80
AppendIJsonMethod · 0.80

Calls 1

partIdxAtOffsetMethod · 0.95

Tested by 1

TestComputePartMapFunction · 0.76