robotfs/engine/engine.go
2025-05-15 18:09:59 +08:00

41 lines
824 B
Go

package engine
import (
"fmt"
"robotfs/store/redis_lua"
"robotfs/utils"
)
type Engine struct {
FileSystemManager *FileSystemManager
}
func NewEngine() *Engine {
return &Engine{}
}
func (e *Engine) Start() error {
s3Config, err := Initialize(utils.GetViper(), "s3.")
if err != nil {
return fmt.Errorf("failed to initialize s3 config: %v", err)
}
object, err := NewStorageManager(s3Config)
if err != nil {
return fmt.Errorf("failed to create storage manager: %v", err)
}
meta := redis_lua.NewRedisLuaStore()
if err := meta.Initialize(utils.GetViper(), "redis."); err != nil {
return fmt.Errorf("failed to initialize meta store: %v", err)
}
filesystem := NewFileSystemManager(meta, object)
e.FileSystemManager = filesystem
return nil
}
func (e *Engine) Stop() {
e.FileSystemManager.Shutdown()
}