writeChecksum persists a new checksum value into the index header on disk and updates the in-memory metadata.
(checksum uint64)
| 265 | // writeChecksum persists a new checksum value into the index header on disk |
| 266 | // and updates the in-memory metadata. |
| 267 | func (idx *UserIndex) writeChecksum(checksum uint64) error { |
| 268 | idx.mu.Lock() |
| 269 | defer idx.mu.Unlock() |
| 270 | |
| 271 | idx.metaData.Checksum = checksum |
| 272 | |
| 273 | headerBytes, err := idx.metaData.Format() |
| 274 | if err != nil { |
| 275 | return err |
| 276 | } |
| 277 | |
| 278 | f, err := os.OpenFile(idx.Filename, os.O_RDWR, 0644) |
| 279 | if err != nil { |
| 280 | return err |
| 281 | } |
| 282 | defer f.Close() |
| 283 | |
| 284 | if _, err := f.Seek(0, io.SeekStart); err != nil { |
| 285 | return err |
| 286 | } |
| 287 | if _, err := f.Write(headerBytes); err != nil { |
| 288 | return err |
| 289 | } |
| 290 | return f.Sync() |
| 291 | } |
| 292 | |
| 293 | func (idx *UserIndex) GetMetaData() IndexMetaData { |
| 294 | idx.mu.RLock() |