//go:build !windows

package intel_rdt

import "github.com/prometheus/procfs"

type processesHandler interface {
	getAllProcesses() ([]process, error)
}

type process struct {
	Name string
	PID  int
}

type processManager struct{}

func newProcessor() processesHandler {
	return &processManager{}
}

func (p *processManager) getAllProcesses() ([]process, error) {
	allProcesses, err := procfs.AllProcs()
	if err != nil {
		return nil, err
	}

	processes := make([]process, 0, len(allProcesses))
	for _, proc := range allProcesses {
		procComm, err := proc.Comm()
		if err != nil {
			continue
		}
		newProcess := process{
			PID:  proc.PID,
			Name: procComm,
		}
		processes = append(processes, newProcess)
	}
	return processes, nil
}
