(name string, service *ManagedService)
| 473 | } |
| 474 | |
| 475 | func (sm *ServiceManager) monitorService(name string, service *ManagedService) { |
| 476 | err := service.CMD.Wait() |
| 477 | |
| 478 | service.mu.Lock() |
| 479 | defer service.mu.Unlock() |
| 480 | |
| 481 | if service.Status == "stopped" { |
| 482 | return |
| 483 | } |
| 484 | |
| 485 | service.Status = "stopped" |
| 486 | |
| 487 | if err != nil { |
| 488 | log.Printf("Service stopped: %s - Error: %v", name, err) |
| 489 | } else { |
| 490 | log.Printf("Service stopped: %s", name) |
| 491 | } |
| 492 | |
| 493 | if service.Config.AutoRestart && sm.Ctx.Err() == nil { |
| 494 | log.Printf("Restarting service: %s", name) |
| 495 | time.Sleep(5 * time.Second) |
| 496 | go func() { |
| 497 | if err := sm.StartService(name); err != nil { |
| 498 | log.Printf("Service restart error: %s - %v", name, err) |
| 499 | } |
| 500 | }() |
| 501 | } |
| 502 | } |
| 503 | |
| 504 | func (sm *ServiceManager) StopService(name string) error { |
| 505 | sm.Mu.RLock() |
no test coverage detected