2014-01-09 06:54:52 +01:00
|
|
|
// Copyright (c) 2013-2014 Conformal Systems LLC.
|
2013-10-13 08:59:55 +02:00
|
|
|
// Use of this source code is governed by an ISC
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package memdb
|
|
|
|
|
|
|
|
import (
|
2014-01-20 03:01:31 +01:00
|
|
|
"fmt"
|
2013-10-13 08:59:55 +02:00
|
|
|
"github.com/conformal/btcdb"
|
2013-11-21 16:48:16 +01:00
|
|
|
"github.com/conformal/btclog"
|
2013-10-13 08:59:55 +02:00
|
|
|
)
|
|
|
|
|
2013-11-21 16:48:16 +01:00
|
|
|
var log = btclog.Disabled
|
2013-10-13 08:59:55 +02:00
|
|
|
|
|
|
|
func init() {
|
2014-01-20 03:01:31 +01:00
|
|
|
driver := btcdb.DriverDB{DbType: "memdb", CreateDB: CreateDB, OpenDB: OpenDB}
|
2013-10-13 08:59:55 +02:00
|
|
|
btcdb.AddDBDriver(driver)
|
|
|
|
}
|
|
|
|
|
2014-01-20 03:01:31 +01:00
|
|
|
// parseArgs parses the arguments from the btcdb Open/Create methods.
|
|
|
|
func parseArgs(funcName string, args ...interface{}) error {
|
|
|
|
if len(args) != 0 {
|
|
|
|
return fmt.Errorf("memdb.%s does not accept any arguments",
|
|
|
|
funcName)
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2013-10-13 08:59:55 +02:00
|
|
|
// OpenDB opens an existing database for use.
|
2014-01-20 03:01:31 +01:00
|
|
|
func OpenDB(args ...interface{}) (btcdb.Db, error) {
|
|
|
|
if err := parseArgs("OpenDB", args...); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2013-10-13 08:59:55 +02:00
|
|
|
// A memory database is not persistent, so let CreateDB handle it.
|
2014-01-20 03:01:31 +01:00
|
|
|
return CreateDB()
|
2013-10-13 08:59:55 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// CreateDB creates, initializes, and opens a database for use.
|
2014-01-20 03:01:31 +01:00
|
|
|
func CreateDB(args ...interface{}) (btcdb.Db, error) {
|
|
|
|
if err := parseArgs("CreateDB", args...); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2013-10-13 08:59:55 +02:00
|
|
|
log = btcdb.GetLog()
|
|
|
|
return newMemDb(), nil
|
|
|
|
}
|