This commit is contained in:
2025-05-24 07:09:15 +04:00
parent b8c8da9e31
commit 5d241e9ade
7 changed files with 995 additions and 0 deletions

View File

@@ -19,6 +19,7 @@ type ServerFactory struct {
redisServer *redisserver.Server
webdavServer *webdavserver.Server
uiApp *AppInstance
jobManager *JobManager
// Control channels
stopCh chan struct{}
@@ -64,6 +65,13 @@ func (f *ServerFactory) Start() error {
}
}
// Start job manager if enabled
if f.config.EnableJobs {
if err := f.startJobManager(); err != nil {
return fmt.Errorf("failed to start job manager: %w", err)
}
}
log.Println("All servers started successfully")
return nil
}
@@ -82,6 +90,13 @@ func (f *ServerFactory) Stop() error {
}
}
// Stop job manager if it's running
if f.jobManager != nil {
if err := f.jobManager.Stop(); err != nil {
log.Printf("Error stopping job manager: %v", err)
}
}
// Wait for all goroutines to finish
f.wg.Wait()
@@ -177,3 +192,35 @@ func (f *ServerFactory) GetWebDAVServer() *webdavserver.Server {
func (f *ServerFactory) GetUIApp() *AppInstance {
return f.uiApp
}
// startJobManager initializes and starts the job manager
func (f *ServerFactory) startJobManager() error {
log.Println("Starting job manager...")
// Create Redis connection for job manager
redisConn := &RedisConnection{
TCPPort: f.config.Redis.TCPPort,
UnixSocketPath: f.config.Redis.UnixSocketPath,
}
// Create job manager
jobManager, err := NewJobManager(f.config.Jobs, redisConn)
if err != nil {
return fmt.Errorf("failed to create job manager: %w", err)
}
f.jobManager = jobManager
// Start job manager
if err := jobManager.Start(); err != nil {
return fmt.Errorf("failed to start job manager: %w", err)
}
log.Println("Job manager started")
return nil
}
// GetJobManager returns the job manager instance
func (f *ServerFactory) GetJobManager() *JobManager {
return f.jobManager
}