48 lines
1007 B
Go
48 lines
1007 B
Go
package engine
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"robotfs/store/redis_lua"
|
|
"robotfs/utils"
|
|
)
|
|
|
|
type Engine struct {
|
|
metadataManager *MetaDataManager
|
|
storageManager *StorageManager
|
|
}
|
|
|
|
func NewEngine() *Engine {
|
|
return &Engine{}
|
|
}
|
|
|
|
func (e *Engine) Start() error {
|
|
store := redis_lua.NewRedisLuaStore()
|
|
if err := store.Initialize(utils.GetViper(), "redis."); err != nil {
|
|
return fmt.Errorf("failed to initialize meta store: %v", err)
|
|
}
|
|
metadata, err := NewMetaDataManager(store)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create metadata manager: %v", err)
|
|
}
|
|
e.metadataManager = metadata
|
|
|
|
s3Config, err := Initialize(utils.GetViper(), "s3.")
|
|
if err != nil {
|
|
return fmt.Errorf("failed to initialize s3 config: %v", err)
|
|
}
|
|
storageManager, err := NewStorageManager(s3Config)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create storage manager: %v", err)
|
|
}
|
|
e.storageManager = storageManager
|
|
|
|
return nil
|
|
}
|
|
|
|
func (e *Engine) Stop() {
|
|
if e.metadataManager != nil {
|
|
e.metadataManager.Shutdown()
|
|
}
|
|
}
|