aboutsummaryrefslogtreecommitdiffstats
path: root/ethdb/memory_database.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-09-16 22:50:14 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-09-16 22:50:14 +0800
commit985b5f29ed18eac6a36d569edbde6dcfde8d1ab0 (patch)
treea5e098c99993d7abe7e012f147e98a1c68bb046c /ethdb/memory_database.go
parent1cc2f080417ba77ecb66a058727e00f6644c5e7b (diff)
parentb25258996059439df82687cc653ed14a5a9edce1 (diff)
downloaddexon-985b5f29ed18eac6a36d569edbde6dcfde8d1ab0.tar
dexon-985b5f29ed18eac6a36d569edbde6dcfde8d1ab0.tar.gz
dexon-985b5f29ed18eac6a36d569edbde6dcfde8d1ab0.tar.bz2
dexon-985b5f29ed18eac6a36d569edbde6dcfde8d1ab0.tar.lz
dexon-985b5f29ed18eac6a36d569edbde6dcfde8d1ab0.tar.xz
dexon-985b5f29ed18eac6a36d569edbde6dcfde8d1ab0.tar.zst
dexon-985b5f29ed18eac6a36d569edbde6dcfde8d1ab0.zip
Merge pull request #1801 from fjl/ethdb
all: move common.Database to ethdb and add NewBatch
Diffstat (limited to 'ethdb/memory_database.go')
-rw-r--r--ethdb/memory_database.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/ethdb/memory_database.go b/ethdb/memory_database.go
index d50f8f9d4..81911f23f 100644
--- a/ethdb/memory_database.go
+++ b/ethdb/memory_database.go
@@ -36,8 +36,7 @@ func NewMemDatabase() (*MemDatabase, error) {
}
func (db *MemDatabase) Put(key []byte, value []byte) error {
- db.db[string(key)] = value
-
+ db.db[string(key)] = common.CopyBytes(value)
return nil
}
@@ -92,6 +91,25 @@ func (db *MemDatabase) LastKnownTD() []byte {
return data
}
-func (db *MemDatabase) Flush() error {
+func (db *MemDatabase) NewBatch() Batch {
+ return &memBatch{db: db}
+}
+
+type kv struct{ k, v []byte }
+
+type memBatch struct {
+ db *MemDatabase
+ writes []kv
+}
+
+func (w *memBatch) Put(key, value []byte) error {
+ w.writes = append(w.writes, kv{key, common.CopyBytes(value)})
+ return nil
+}
+
+func (w *memBatch) Write() error {
+ for _, kv := range w.writes {
+ w.db.db[string(kv.k)] = kv.v
+ }
return nil
}