storage manager 添加open方法
This commit is contained in:
parent
dfa34016e5
commit
76b132a8b7
|
@ -2,6 +2,8 @@ package storage
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -72,6 +74,39 @@ func (sm *StorageManager) GetStorage(dbName string) (*LevelDBStorage, error) {
|
||||||
return sm.db[dbName], nil
|
return sm.db[dbName], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sm *StorageManager) isLevelDB(dirp string) bool {
|
||||||
|
if _, err := os.Stat(dirp); os.IsNotExist(err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
files := []string{"CURRENT", "LOCK", "LOG", "LOG.old", "MANIFEST-"}
|
||||||
|
for _, file := range files {
|
||||||
|
if _, err := os.Stat(dirp + "/" + file); err == nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sm *StorageManager) Open() {
|
||||||
|
// 得到dbrootDir下的所有子目录
|
||||||
|
dirs, err := ioutil.ReadDir(sm.dbrootDir)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
for _, dir := range dirs {
|
||||||
|
if dir.IsDir() {
|
||||||
|
dbPath := sm.dbrootDir + "/" + dir.Name()
|
||||||
|
if sm.isLevelDB(dbPath) {
|
||||||
|
db, err := NewLevelDBStorage(dbPath)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
sm.db[dir.Name()] = db
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
func (sm *StorageManager) Close() {
|
func (sm *StorageManager) Close() {
|
||||||
for _, db := range sm.db {
|
for _, db := range sm.db {
|
||||||
db.Close()
|
db.Close()
|
||||||
|
|
Loading…
Reference in New Issue