returns a map of partIdx to amount of data to write to that part
(startOffset int64, size int64)
| 454 | |
| 455 | // returns a map of partIdx to amount of data to write to that part |
| 456 | func (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 | |
| 477 | func (s *FileStore) getDirtyCacheKeys() []cacheKey { |
| 478 | s.Lock.Lock() |