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

Method readBucket

recovery_reader.go:96–121  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

94}
95
96func (fr *fileRecovery) readBucket() (b *core.Bucket, err error) {
97 buf := make([]byte, core.BucketMetaSize)
98 _, err = io.ReadFull(fr.reader, buf)
99 if err != nil {
100 return nil, err
101 }
102 meta := new(core.BucketMeta)
103 meta.Decode(buf)
104 bucket := new(core.Bucket)
105 bucket.Meta = meta
106 dataBuf := make([]byte, meta.Size)
107 _, err = io.ReadFull(fr.reader, dataBuf)
108 if err != nil {
109 return nil, err
110 }
111 err = bucket.Decode(dataBuf)
112 if err != nil {
113 return nil, err
114 }
115
116 if bucket.GetCRC(buf, dataBuf) != bucket.Meta.Crc {
117 return nil, core.ErrBucketCrcInvalid
118 }
119
120 return bucket, nil
121}
122
123// calBufferSize calculates the buffer size of bufio.Reader
124// if the size < 4 * KB, use 4 * KB as the size of buffer in bufio.Reader

Callers 2

rebuildBucketManagerMethod · 0.80

Calls 2

GetCRCMethod · 0.80
DecodeMethod · 0.45

Tested by 1