| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | package ethdb | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							| 
									
										
										
										
											2014-10-23 15:01:27 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/ethutil" | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  |  * This is a test memory database. Do not use for any production it does not get persisted | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | type MemDatabase struct { | 
					
						
							|  |  |  | 	db map[string][]byte | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func NewMemDatabase() (*MemDatabase, error) { | 
					
						
							|  |  |  | 	db := &MemDatabase{db: make(map[string][]byte)} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return db, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (db *MemDatabase) Put(key []byte, value []byte) { | 
					
						
							|  |  |  | 	db.db[string(key)] = value | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-19 16:21:28 +01:00
										 |  |  | func (db *MemDatabase) Set(key []byte, value []byte) { | 
					
						
							|  |  |  | 	db.Put(key, value) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | func (db *MemDatabase) Get(key []byte) ([]byte, error) { | 
					
						
							|  |  |  | 	return db.db[string(key)], nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-14 13:54:40 +02:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2014-02-28 12:18:41 +01:00
										 |  |  | func (db *MemDatabase) GetKeys() []*ethutil.Key { | 
					
						
							|  |  |  | 	data, _ := db.Get([]byte("KeyRing")) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return []*ethutil.Key{ethutil.NewKeyFromBytes(data)} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2014-05-14 13:54:40 +02:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2014-02-28 12:18:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-24 12:12:01 +01:00
										 |  |  | func (db *MemDatabase) Delete(key []byte) error { | 
					
						
							|  |  |  | 	delete(db.db, string(key)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | func (db *MemDatabase) Print() { | 
					
						
							|  |  |  | 	for key, val := range db.db { | 
					
						
							|  |  |  | 		fmt.Printf("%x(%d): ", key, len(key)) | 
					
						
							| 
									
										
										
										
											2014-02-15 01:34:18 +01:00
										 |  |  | 		node := ethutil.NewValueFromBytes(val) | 
					
						
							|  |  |  | 		fmt.Printf("%q\n", node.Interface()) | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (db *MemDatabase) Close() { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (db *MemDatabase) LastKnownTD() []byte { | 
					
						
							|  |  |  | 	data, _ := db.Get([]byte("LastKnownTotalDifficulty")) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if len(data) == 0 || data == nil { | 
					
						
							|  |  |  | 		data = []byte{0x0} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return data | 
					
						
							|  |  |  | } |