/** * @file * @copyright defined in aergo/LICENSE.txt */ package db // ImplType represents implementators of a DB interface type ImplType string const ( // LevelImpl represents a name of DB interface implementation using leveldb LevelImpl ImplType = "leveldb" // MemoryImpl represents a name of DB interface implementation in memory MemoryImpl ImplType = "memorydb" ) type dbConstructor func(dir string) (DB, error) // DB is an general interface to access at storage data type DB interface { Type() string Set(key, value []byte) Delete(key []byte) Get(key []byte) []byte Exist(key []byte) bool Iterator(start, end []byte) Iterator NewTx() Transaction NewBulk() Bulk Close() //Print() //Stats() map[string]string } // Transaction is used to batch multiple operations type Transaction interface { // Get(key []byte) []byte Set(key, value []byte) Delete(key []byte) Commit() Discard() } // Bulk is used to batch multiple transactions // This will internally commit transactions when reach maximum tx size type Bulk interface { Set(key, value []byte) Delete(key []byte) Flush() DiscardLast() } // Iterator is used to navigate specific key ranges type Iterator interface { Next() Valid() bool Key() []byte Value() []byte }