MmapMarkers appends mmap markers in rec to the given slice.
(rec []byte, markers []RefMmapMarker)
| 499 | |
| 500 | // MmapMarkers appends mmap markers in rec to the given slice. |
| 501 | func (*Decoder) MmapMarkers(rec []byte, markers []RefMmapMarker) ([]RefMmapMarker, error) { |
| 502 | dec := encoding.Decbuf{B: rec} |
| 503 | t := Type(dec.Byte()) |
| 504 | if t != MmapMarkers { |
| 505 | return nil, errors.New("invalid record type") |
| 506 | } |
| 507 | |
| 508 | if dec.Len() == 0 { |
| 509 | return markers, nil |
| 510 | } |
| 511 | for len(dec.B) > 0 && dec.Err() == nil { |
| 512 | ref := chunks.HeadSeriesRef(dec.Be64()) |
| 513 | mmapRef := chunks.ChunkDiskMapperRef(dec.Be64()) |
| 514 | markers = append(markers, RefMmapMarker{ |
| 515 | Ref: ref, |
| 516 | MmapRef: mmapRef, |
| 517 | }) |
| 518 | } |
| 519 | |
| 520 | if dec.Err() != nil { |
| 521 | return nil, fmt.Errorf("decode error after %d mmap markers: %w", len(markers), dec.Err()) |
| 522 | } |
| 523 | if len(dec.B) > 0 { |
| 524 | return nil, fmt.Errorf("unexpected %d bytes left in entry", len(dec.B)) |
| 525 | } |
| 526 | return markers, nil |
| 527 | } |
| 528 | |
| 529 | // HistogramSamples appends histogram samples in rec to the given slice. |
| 530 | func (d *Decoder) HistogramSamples(rec []byte, histograms []RefHistogramSample) ([]RefHistogramSample, error) { |