Get implements Wal.Get.
(i uint64)
| 158 | |
| 159 | // Get implements Wal.Get. |
| 160 | func (p *LevelDBWal) Get(i uint64) (l *kt.Log, err error) { |
| 161 | if atomic.LoadUint32(&p.closed) == 1 { |
| 162 | err = ErrWalClosed |
| 163 | return |
| 164 | } |
| 165 | |
| 166 | headerKey := append(append([]byte(nil), logHeaderKeyPrefix...), p.uint64ToBytes(i)...) |
| 167 | |
| 168 | var headerData []byte |
| 169 | if headerData, err = p.db.Get(headerKey, nil); err == leveldb.ErrNotFound { |
| 170 | err = ErrNotExists |
| 171 | return |
| 172 | } else if err != nil { |
| 173 | err = errors.Wrap(err, "get log header failed") |
| 174 | return |
| 175 | } |
| 176 | |
| 177 | return p.load(headerData) |
| 178 | } |
| 179 | |
| 180 | // Close implements Wal.Close. |
| 181 | func (p *LevelDBWal) Close() { |