44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package grpc
|
|
|
|
import "sync"
|
|
|
|
func (s *Server) trackJobAssignment(agentID, jobID string) {
|
|
jobSetInterface, _ := s.agentJobs.LoadOrStore(agentID, &sync.Map{})
|
|
if jobSet, ok := jobSetInterface.(*sync.Map); ok {
|
|
jobSet.Store(jobID, true)
|
|
}
|
|
}
|
|
|
|
func (s *Server) untrackJobAssignment(agentID, jobID string) {
|
|
if jobSetInterface, ok := s.agentJobs.Load(agentID); ok {
|
|
if jobSet, ok := jobSetInterface.(*sync.Map); ok {
|
|
jobSet.Delete(jobID)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (s *Server) isJobAssigned(agentID, jobID string) bool {
|
|
if jobSetInterface, ok := s.agentJobs.Load(agentID); ok {
|
|
if jobSet, ok := jobSetInterface.(*sync.Map); ok {
|
|
_, found := jobSet.Load(jobID)
|
|
return found
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (s *Server) getAgentJobs(agentID string) []string {
|
|
jobs := []string{}
|
|
if jobSetInterface, ok := s.agentJobs.Load(agentID); ok {
|
|
if jobSet, ok := jobSetInterface.(*sync.Map); ok {
|
|
jobSet.Range(func(key, _ any) bool {
|
|
if jobID, ok := key.(string); ok {
|
|
jobs = append(jobs, jobID)
|
|
}
|
|
return true
|
|
})
|
|
}
|
|
}
|
|
return jobs
|
|
}
|