package models // Process represents a single running process with its relevant details. type Process struct { PID int `json:"pid"` Name string `json:"name"` CPU float64 `json:"cpu"` // CPU usage percentage Memory float64 `json:"memory"` // Memory usage in MB // Add other fields if needed, e.g., User, Status, Path } // ProcessManagerService defines the interface for interacting with the system's process manager. // This will be implemented by a struct that calls pkg/system/processmanager. type ProcessManagerService interface { GetProcesses() ([]Process, error) KillProcess(pid int) error } // TODO: Implement a concrete ProcessManagerService that uses pkg/system/processmanager. // For now, we can create a mock implementation for development and testing of the UI. // MockProcessManager is a mock implementation of ProcessManagerService for UI development. type MockProcessManager struct{} // GetProcesses returns a list of mock processes. func (m *MockProcessManager) GetProcesses() ([]Process, error) { // Return some mock data return []Process{ {PID: 1001, Name: "SystemIdleProcess", CPU: 95.5, Memory: 0.1}, {PID: 1002, Name: "explorer.exe", CPU: 1.2, Memory: 150.7}, {PID: 1003, Name: "chrome.exe", CPU: 25.8, Memory: 512.3}, {PID: 1004, Name: "code.exe", CPU: 5.1, Memory: 350.0}, {PID: 1005, Name: "go.exe", CPU: 0.5, Memory: 80.2}, }, nil } // KillProcess simulates killing a process. func (m *MockProcessManager) KillProcess(pid int) error { // In a real implementation, this would call the system process manager. // For mock, we just print a message or do nothing. // fmt.Printf("Mock: Attempting to kill process %d\n", pid) return nil } // NewMockProcessManager creates a new instance of MockProcessManager. func NewMockProcessManager() ProcessManagerService { return &MockProcessManager{} }