mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 01:13:45 +00:00
ethdb: add Putter interface and Has method
This commit is contained in:
parent
c4d21bc8e5
commit
2ea88e168c
3 changed files with 23 additions and 4 deletions
|
|
@ -109,6 +109,10 @@ func (db *LDBDatabase) Put(key []byte, value []byte) error {
|
||||||
return db.db.Put(key, value, nil)
|
return db.db.Put(key, value, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *LDBDatabase) Has(key []byte) (bool, error) {
|
||||||
|
return db.db.Has(key, nil)
|
||||||
|
}
|
||||||
|
|
||||||
// Get returns the given key if it's present.
|
// Get returns the given key if it's present.
|
||||||
func (db *LDBDatabase) Get(key []byte) ([]byte, error) {
|
func (db *LDBDatabase) Get(key []byte) ([]byte, error) {
|
||||||
// Measure the database get latency, if requested
|
// Measure the database get latency, if requested
|
||||||
|
|
@ -271,8 +275,6 @@ func (db *LDBDatabase) meter(refresh time.Duration) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: remove this stuff and expose leveldb directly
|
|
||||||
|
|
||||||
func (db *LDBDatabase) NewBatch() Batch {
|
func (db *LDBDatabase) NewBatch() Batch {
|
||||||
return &ldbBatch{db: db.db, b: new(leveldb.Batch)}
|
return &ldbBatch{db: db.db, b: new(leveldb.Batch)}
|
||||||
}
|
}
|
||||||
|
|
@ -309,6 +311,10 @@ func (dt *table) Put(key []byte, value []byte) error {
|
||||||
return dt.db.Put(append([]byte(dt.prefix), key...), value)
|
return dt.db.Put(append([]byte(dt.prefix), key...), value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dt *table) Has(key []byte) (bool, error) {
|
||||||
|
return dt.db.Has(append([]byte(dt.prefix), key...))
|
||||||
|
}
|
||||||
|
|
||||||
func (dt *table) Get(key []byte) ([]byte, error) {
|
func (dt *table) Get(key []byte) ([]byte, error) {
|
||||||
return dt.db.Get(append([]byte(dt.prefix), key...))
|
return dt.db.Get(append([]byte(dt.prefix), key...))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,15 +16,20 @@
|
||||||
|
|
||||||
package ethdb
|
package ethdb
|
||||||
|
|
||||||
type Database interface {
|
type Putter interface {
|
||||||
Put(key []byte, value []byte) error
|
Put(key []byte, value []byte) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type Database interface {
|
||||||
|
Putter
|
||||||
Get(key []byte) ([]byte, error)
|
Get(key []byte) ([]byte, error)
|
||||||
|
Has(key []byte) (bool, error)
|
||||||
Delete(key []byte) error
|
Delete(key []byte) error
|
||||||
Close()
|
Close()
|
||||||
NewBatch() Batch
|
NewBatch() Batch
|
||||||
}
|
}
|
||||||
|
|
||||||
type Batch interface {
|
type Batch interface {
|
||||||
Put(key, value []byte) error
|
Putter
|
||||||
Write() error
|
Write() error
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,14 @@ func (db *MemDatabase) Put(key []byte, value []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *MemDatabase) Has(key []byte) (bool, error) {
|
||||||
|
db.lock.Lock()
|
||||||
|
defer db.lock.Unlock()
|
||||||
|
|
||||||
|
_, ok := db.db[string(key)]
|
||||||
|
return ok, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *MemDatabase) Get(key []byte) ([]byte, error) {
|
func (db *MemDatabase) Get(key []byte) ([]byte, error) {
|
||||||
db.lock.RLock()
|
db.lock.RLock()
|
||||||
defer db.lock.RUnlock()
|
defer db.lock.RUnlock()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue