diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-09-16 22:50:14 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-09-16 22:50:14 +0800 |
commit | 985b5f29ed18eac6a36d569edbde6dcfde8d1ab0 (patch) | |
tree | a5e098c99993d7abe7e012f147e98a1c68bb046c /ethdb/memory_database.go | |
parent | 1cc2f080417ba77ecb66a058727e00f6644c5e7b (diff) | |
parent | b25258996059439df82687cc653ed14a5a9edce1 (diff) | |
download | dexon-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.go | 24 |
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 } |