| 129 | } |
| 130 | |
| 131 | func (r *objectReader) findChunkIndexForOffset(offset int64) (int, error) { |
| 132 | left := 0 |
| 133 | right := len(r.seekTable) - 1 |
| 134 | |
| 135 | for left <= right { |
| 136 | middle := (left + right) / 2 //nolint:mnd |
| 137 | |
| 138 | if offset < r.seekTable[middle].Start { |
| 139 | right = middle - 1 |
| 140 | continue |
| 141 | } |
| 142 | |
| 143 | if offset >= r.seekTable[middle].endOffset() { |
| 144 | left = middle + 1 |
| 145 | continue |
| 146 | } |
| 147 | |
| 148 | return middle, nil |
| 149 | } |
| 150 | |
| 151 | return 0, errors.Errorf("can't find chunk for offset %v", offset) |
| 152 | } |
| 153 | |
| 154 | func (r *objectReader) Seek(offset int64, whence int) (int64, error) { |
| 155 | if whence == io.SeekCurrent { |