| 183 | |
| 184 | #[instrument(level = "trace")] |
| 185 | fn crc32c_len(file: &mut File) -> io::Result<u32> { |
| 186 | file.seek(std::io::SeekFrom::Start(0)).inspect_err(|err| { |
| 187 | error!(?err, "Unable to seek tempfile"); |
| 188 | })?; |
| 189 | |
| 190 | /* |
| 191 | let amt = file.metadata().map(|m| m.len() as usize).map_err(|e| { |
| 192 | error!("Unable to access metadata -> {:?}", e); |
| 193 | })?; |
| 194 | */ |
| 195 | |
| 196 | let mut buf_file = BufReader::with_capacity(8192, file); |
| 197 | let mut crc = 0; |
| 198 | loop { |
| 199 | let buffer = buf_file |
| 200 | .fill_buf() |
| 201 | .inspect_err(|err| error!(?err, "crc32c_len error"))?; |
| 202 | |
| 203 | let length = buffer.len(); |
| 204 | if length == 0 { |
| 205 | // We are done! |
| 206 | break; |
| 207 | } else { |
| 208 | // we have content, proceed. |
| 209 | crc = crc32c::crc32c_append(crc, buffer); |
| 210 | buf_file.consume(length); |
| 211 | } |
| 212 | } |
| 213 | debug!("crc32c is: {:x}", crc); |
| 214 | |
| 215 | Ok(crc) |
| 216 | } |
| 217 | |
| 218 | #[derive(Clone)] |
| 219 | pub struct ArcDiskCache<K, D> |