robotfs/engine/engine.go
2025-05-12 20:23:33 +08:00

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()
}
}