The core protocol of WoopChain
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.
woop/internal/tikv/prefix/prefix_batch.go

43 lines
1.1 KiB

3 years ago
package prefix
import "github.com/ethereum/go-ethereum/ethdb"
type PrefixBatch struct {
prefix []byte
batch ethdb.Batch
}
func newPrefixBatch(prefix []byte, batch ethdb.Batch) *PrefixBatch {
return &PrefixBatch{prefix: prefix, batch: batch}
}
// Put inserts the given value into the key-value data store.
func (p *PrefixBatch) Put(key []byte, value []byte) error {
return p.batch.Put(append(append([]byte{}, p.prefix...), key...), value)
}
// Delete removes the key from the key-value data store.
func (p *PrefixBatch) Delete(key []byte) error {
return p.batch.Delete(append(append([]byte{}, p.prefix...), key...))
}
// ValueSize retrieves the amount of data queued up for writing.
func (p *PrefixBatch) ValueSize() int {
return p.batch.ValueSize()
}
// Write flushes any accumulated data to disk.
func (p *PrefixBatch) Write() error {
return p.batch.Write()
}
// Reset resets the batch for reuse.
func (p *PrefixBatch) Reset() {
p.batch.Reset()
}
// Replay replays the batch contents.
func (p *PrefixBatch) Replay(w ethdb.KeyValueWriter) error {
return p.batch.Replay(newPrefixBatchReplay(p.prefix, w))
}