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

Method Read

kayak/wal/leveldb_wal.go:121–157  ·  view source on GitHub ↗

Read implements Wal.Read.

()

Source from the content-addressed store, hash-verified

119
120// Read implements Wal.Read.
121func (p *LevelDBWal) Read() (l *kt.Log, err error) {
122 if atomic.LoadUint32(&p.closed) == 1 {
123 err = ErrWalClosed
124 return
125 }
126
127 if atomic.LoadUint32(&p.read) == 1 {
128 err = io.EOF
129 return
130 }
131
132 p.readLock.Lock()
133 defer p.readLock.Unlock()
134
135 // start with base, use iterator to read
136 if p.it == nil {
137 keyRange := util.BytesPrefix(logHeaderKeyPrefix)
138 p.it = p.db.NewIterator(keyRange, nil)
139 }
140
141 if p.it.Next() {
142 // load
143 l, err = p.load(p.it.Value())
144 return
145 }
146
147 p.it.Release()
148 if err = p.it.Error(); err == nil {
149 err = io.EOF
150 }
151 p.it = nil
152
153 // log read complete, could not read again
154 atomic.StoreUint32(&p.read, 1)
155
156 return
157}
158
159// Get implements Wal.Get.
160func (p *LevelDBWal) Get(i uint64) (l *kt.Log, err error) {

Callers 1

TestLevelDBWal_WriteFunction · 0.95

Calls 4

loadMethod · 0.95
ValueMethod · 0.80
ErrorMethod · 0.80
NextMethod · 0.45

Tested by 1

TestLevelDBWal_WriteFunction · 0.76