memory_database.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package ethdb
  2. import (
  3. "fmt"
  4. "github.com/ethereum/go-ethereum/common"
  5. )
  6. /*
  7. * This is a test memory database. Do not use for any production it does not get persisted
  8. */
  9. type MemDatabase struct {
  10. db map[string][]byte
  11. }
  12. func NewMemDatabase() (*MemDatabase, error) {
  13. db := &MemDatabase{db: make(map[string][]byte)}
  14. return db, nil
  15. }
  16. func (db *MemDatabase) Put(key []byte, value []byte) {
  17. db.db[string(key)] = value
  18. }
  19. func (db *MemDatabase) Set(key []byte, value []byte) {
  20. db.Put(key, value)
  21. }
  22. func (db *MemDatabase) Get(key []byte) ([]byte, error) {
  23. return db.db[string(key)], nil
  24. }
  25. /*
  26. func (db *MemDatabase) GetKeys() []*common.Key {
  27. data, _ := db.Get([]byte("KeyRing"))
  28. return []*common.Key{common.NewKeyFromBytes(data)}
  29. }
  30. */
  31. func (db *MemDatabase) Delete(key []byte) error {
  32. delete(db.db, string(key))
  33. return nil
  34. }
  35. func (db *MemDatabase) Print() {
  36. for key, val := range db.db {
  37. fmt.Printf("%x(%d): ", key, len(key))
  38. node := common.NewValueFromBytes(val)
  39. fmt.Printf("%q\n", node.Val)
  40. }
  41. }
  42. func (db *MemDatabase) Close() {
  43. }
  44. func (db *MemDatabase) LastKnownTD() []byte {
  45. data, _ := db.Get([]byte("LastKnownTotalDifficulty"))
  46. if len(data) == 0 || data == nil {
  47. data = []byte{0x0}
  48. }
  49. return data
  50. }
  51. func (db *MemDatabase) Flush() error {
  52. return nil
  53. }