Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/dataobj/internal/encoding/decoder_reader_at.go

32 lines
765 B

package encoding
import (
"context"
"fmt"
"io"
"math"
)
// ReaderAtDecoder decodes a data object from the provided [io.ReaderAt]. The
// size argument specifies the total number of bytes in r.
func ReaderAtDecoder(r io.ReaderAt, size int64) Decoder {
return &rangeDecoder{
r: &readerAtRangeReader{r: r, size: size},
}
}
type readerAtRangeReader struct {
size int64
r io.ReaderAt
}
func (rr *readerAtRangeReader) Size(_ context.Context) (int64, error) {
return rr.size, nil
}
func (rr *readerAtRangeReader) ReadRange(_ context.Context, offset int64, length int64) (io.ReadCloser, error) {
if length > math.MaxInt {
return nil, fmt.Errorf("length too large: %d", length)
}
return io.NopCloser(io.NewSectionReader(rr.r, offset, length)), nil
}