MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / Read

Method Read

hintfile.go:238–330  ·  view source on GitHub ↗

Read reads a hint entry from the file

()

Source from the content-addressed store, hash-verified

236
237// Read reads a hint entry from the file
238func (r *HintFileReader) Read() (*HintEntry, error) {
239 if r.reader == nil {
240 return nil, ErrHintFileEntryInvalid
241 }
242
243 entry := &HintEntry{}
244 fieldsRead := 0
245
246 readUvarint := func() (uint64, error) {
247 val, err := binary.ReadUvarint(r.reader)
248 if err != nil {
249 if err == io.EOF {
250 if fieldsRead == 0 {
251 return 0, io.EOF
252 }
253 return 0, ErrHintFileCorrupted
254 }
255 if err == io.ErrUnexpectedEOF {
256 return 0, ErrHintFileCorrupted
257 }
258 return 0, err
259 }
260 fieldsRead++
261 return val, nil
262 }
263
264 var err error
265 if entry.BucketId, err = readUvarint(); err != nil {
266 return nil, err
267 }
268
269 keySize, err := readUvarint()
270 if err != nil {
271 return nil, err
272 }
273 entry.KeySize = uint32(keySize)
274
275 valueSize, err := readUvarint()
276 if err != nil {
277 return nil, err
278 }
279 entry.ValueSize = uint32(valueSize)
280
281 if entry.Timestamp, err = readUvarint(); err != nil {
282 return nil, err
283 }
284
285 ttl, err := readUvarint()
286 if err != nil {
287 return nil, err
288 }
289 entry.TTL = uint32(ttl)
290
291 flag, err := readUvarint()
292 if err != nil {
293 return nil, err
294 }
295 entry.Flag = uint16(flag)

Callers 9

BenchmarkHintFileReadFunction · 0.95
loadHintFileMethod · 0.95
TestHintFileWriterReaderFunction · 0.95
TestHintFilePartialReadFunction · 0.95
TestDB_MergeWithHintFileFunction · 0.95
readEntryMethod · 0.80
UnmarshalIntsFunction · 0.80

Calls 1

readCompatInt64Function · 0.85