forked from TrueCloudLab/neoneo-go
aa4bc1b6e8
* block partial persist * replaced refactored files with old one. * removed gokit/log from deps * Tweaks to not overburden remote nodes with getheaders/getblocks * Changed Transporter interface to not take the server as argument due to a cause of race warning from the compiler * started server test suite * more test + return errors from message handlers * removed --race from build * Little improvements.
41 lines
1,004 B
Go
41 lines
1,004 B
Go
package core
|
|
|
|
import (
|
|
"github.com/syndtr/goleveldb/leveldb"
|
|
"github.com/syndtr/goleveldb/leveldb/opt"
|
|
)
|
|
|
|
// LevelDBStore is the official storage implementation for storing and retreiving
|
|
// blockchain data.
|
|
type LevelDBStore struct {
|
|
db *leveldb.DB
|
|
path string
|
|
}
|
|
|
|
// NewLevelDBStore return a new LevelDBStore object that will
|
|
// initialize the database found at the given path.
|
|
func NewLevelDBStore(path string, opts *opt.Options) (*LevelDBStore, error) {
|
|
db, err := leveldb.OpenFile(path, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &LevelDBStore{
|
|
path: path,
|
|
db: db,
|
|
}, nil
|
|
}
|
|
|
|
// write implements the Store interface.
|
|
func (s *LevelDBStore) write(key, value []byte) error {
|
|
return s.db.Put(key, value, nil)
|
|
}
|
|
|
|
//get implements the Store interface.
|
|
func (s *LevelDBStore) get(key []byte) ([]byte, error) {
|
|
return s.db.Get(key, nil)
|
|
}
|
|
|
|
// writeBatch implements the Store interface.
|
|
func (s *LevelDBStore) writeBatch(batch *leveldb.Batch) error {
|
|
return s.db.Write(batch, nil)
|
|
}
|