| 111 | }; |
| 112 | |
| 113 | void ReadRangeCache::cache(std::vector<ReadRange> ranges) { |
| 114 | ranges = ReadRangeCombiner::coalesceReadRanges(std::move(ranges), options_.holeSizeLimit, |
| 115 | options_.rangeSizeLimit); |
| 116 | |
| 117 | std::vector<RangeCacheEntry> newEntries = makeCacheEntries(ranges); |
| 118 | // Add new entries, themselves ordered by offset |
| 119 | if (entries_.size() > 0) { |
| 120 | std::vector<RangeCacheEntry> merged(entries_.size() + newEntries.size()); |
| 121 | std::merge(entries_.begin(), entries_.end(), newEntries.begin(), newEntries.end(), |
| 122 | merged.begin()); |
| 123 | entries_ = std::move(merged); |
| 124 | } else { |
| 125 | entries_ = std::move(newEntries); |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | BufferSlice ReadRangeCache::read(const ReadRange& range) { |
| 130 | if (range.length == 0) { |