storage manager 添加open方法
This commit is contained in:
parent
dfa34016e5
commit
76b132a8b7
|
@ -2,6 +2,8 @@ package storage
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
|
@ -72,6 +74,39 @@ func (sm *StorageManager) GetStorage(dbName string) (*LevelDBStorage, error) {
|
|||
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() {
|
||||
for _, db := range sm.db {
|
||||
db.Close()
|
||||
|
|
Loading…
Reference in New Issue