tendermint/db/db.go

35 lines
781 B
Go
Raw Normal View History

2015-10-22 12:31:02 -07:00
package db
2017-12-12 14:00:03 -08:00
import "fmt"
//----------------------------------------
// Main entry
2015-10-22 12:31:02 -07:00
const (
2017-12-12 16:08:22 -08:00
LevelDBBackendStr = "leveldb" // legacy, defaults to goleveldb unless +gcc
2016-12-22 12:44:51 -08:00
CLevelDBBackendStr = "cleveldb"
GoLevelDBBackendStr = "goleveldb"
MemDBBackendStr = "memdb"
FSDBBackendStr = "fsdb" // using the filesystem naively
)
type dbCreator func(name string, dir string) (DB, error)
var backends = map[string]dbCreator{}
func registerDBCreator(backend string, creator dbCreator, force bool) {
_, ok := backends[backend]
if !force && ok {
return
}
backends[backend] = creator
}
2015-10-22 12:31:02 -07:00
2016-05-08 15:00:13 -07:00
func NewDB(name string, backend string, dir string) DB {
db, err := backends[backend](name, dir)
if err != nil {
2017-12-12 14:00:03 -08:00
panic(fmt.Sprintf("Error initializing DB: %v", err))
2015-10-22 12:31:02 -07:00
}
return db
2015-10-22 12:31:02 -07:00
}