Files
lucemon/app.go

64 lines
1.4 KiB
Go

package main
import (
"context"
"fmt"
"sysmon/backend"
)
// App struct
type App struct {
ctx context.Context
sys *backend.SysInfo
}
// NewApp creates a new App application struct
func NewApp() *App {
return &App{}
}
// startup is called when the app starts. The context is saved
// so we can call the runtime methods
func (a *App) startup(ctx context.Context) {
a.ctx = ctx
a.InitBackend(ctx)
}
// Greet returns a greeting for the given name
func (a *App) Greet(name string) string {
return fmt.Sprintf("Hello %s, It's show time!", name)
}
// Initialise backend SysInfo on startup and expose its methods
func (a *App) InitBackend(ctx context.Context) {
if ctx == nil {
ctx = context.Background()
}
a.ctx = ctx
a.sys = backend.NewSysInfo(a.ctx)
}
// GetMetrics proxies to backend.SysInfo.GetMetrics
func (a *App) GetMetrics() (*backend.Metrics, error) {
if a.sys == nil {
a.InitBackend(a.ctx)
}
return a.sys.GetMetrics()
}
// GetProcessDetail returns all available details for the given PID.
func (a *App) GetProcessDetail(pid int32) (*backend.ProcessDetail, error) {
return backend.FetchProcessDetail(pid)
}
// KillProcess terminates a process by PID. Set force=true for SIGKILL.
func (a *App) KillProcess(pid int32, force bool) error {
return backend.KillProcess(pid, force)
}
// GetManPage returns the plain-text manual page for the given command.
func (a *App) GetManPage(name string) string {
return backend.GetManPage(name)
}