(name string)
| 304 | } |
| 305 | |
| 306 | func (sm *ServiceManager) GetServiceStatus(name string) (ServiceStatus, error) { |
| 307 | sm.Mu.RLock() |
| 308 | service, exists := sm.Services[name] |
| 309 | sm.Mu.RUnlock() |
| 310 | |
| 311 | if !exists { |
| 312 | return ServiceStatus{}, fmt.Errorf("can't find service: %s", name) |
| 313 | } |
| 314 | |
| 315 | service.mu.RLock() |
| 316 | defer service.mu.RUnlock() |
| 317 | |
| 318 | var ramUsage int64 |
| 319 | if service.Status == "running" && service.PID > 0 { |
| 320 | ramUsage, _ = getProcessTreeRAM(service.PID) |
| 321 | } |
| 322 | |
| 323 | return ServiceStatus{ |
| 324 | Name: name, |
| 325 | Status: service.Status, |
| 326 | PID: service.PID, |
| 327 | StartTime: service.StartTime, |
| 328 | Uptime: time.Since(service.StartTime), |
| 329 | WorkDir: service.WorkDir, |
| 330 | RAM: service.Config.RAM, |
| 331 | RAMBytes: service.Config.RAMBytes, |
| 332 | RAMUsage: ramUsage, |
| 333 | RAMUsageStr: utils.ConvertBytesToString(ramUsage), |
| 334 | }, nil |
| 335 | } |
| 336 | |
| 337 | func (sm *ServiceManager) StartService(name string) error { |
| 338 | sm.Mu.Lock() |
no test coverage detected