channeldb: switch to bolt.DB instead of walletdb.DB

This decouples channeldb from btcwallet, and also allows us access to
bolt’s Batch() call.
This commit is contained in:
Olaoluwa Osuntokun
2016-03-22 18:46:30 -07:00
parent 670d441dea
commit 3e3948a04f
2 changed files with 45 additions and 50 deletions

View File

@@ -3,10 +3,16 @@ package channeldb
import (
"bytes"
"encoding/binary"
"os"
"path/filepath"
"sync"
"github.com/boltdb/bolt"
"github.com/btcsuite/btcwallet/waddrmgr"
"github.com/btcsuite/btcwallet/walletdb"
)
const (
dbName = "channel.db"
)
var (
@@ -23,23 +29,34 @@ type DB struct {
// TODO(roasbeef): caching, etc?
addrmgr *waddrmgr.Manager
namespace walletdb.Namespace
db *bolt.DB
}
// Wipe...
func (d *DB) Wipe() error {
return d.namespace.Update(func(tx walletdb.Tx) error {
rootBucket := tx.RootBucket()
// TODO(roasbeef): other buckets
return rootBucket.DeleteBucket(openChannelBucket)
return d.db.Update(func(tx *bolt.Tx) error {
return tx.DeleteBucket(openChannelBucket)
})
}
// New...
// TODO(roasbeef): re-visit this dependancy...
func New(addrmgr *waddrmgr.Manager, namespace walletdb.Namespace) *DB {
// TODO(roasbeef): create buckets if not created?
return &DB{addrmgr, namespace}
func New(dbPath string, addrmgr *waddrmgr.Manager) (*DB, error) {
if _, err := os.Stat(dbPath); err != nil {
if os.IsNotExist(err) {
if err := os.MkdirAll(dbPath, 0700); err != nil {
return nil, err
}
}
}
path := filepath.Join(dbPath, dbName)
boltDB, err := bolt.Open(path, 0600, nil)
if err != nil {
return nil, err
}
return &DB{addrmgr, boltDB}, nil
}
// Open...
@@ -52,3 +69,11 @@ func Open() *DB {
func Create() *DB {
return nil
}
// Close...
func (d *DB) Close() error {
return d.db.Close()
}
// TODO(roasbeef): SetCryptoSystem method...
// * don't have waddrmgr up before..