gitlab-runner-gateway/src/main/java/tk/antoine_roux/wiki/service/JobManager.java

28 lines
854 B
Java

package tk.antoine_roux.wiki.service;
import org.springframework.stereotype.Service;
import tk.antoine_roux.wiki.model.internal.HookEvent;
import tk.antoine_roux.wiki.model.internal.Job;
import tk.antoine_roux.wiki.model.request.JobRequest;
import java.util.Optional;
import java.util.concurrent.ConcurrentLinkedQueue;
@Service
public class JobManager {
/**
* concurrent list of {@link Job} fill by {@link tk.antoine_roux.wiki.ControllerHandlers#webhook(HookEvent)}
* and pop by {@link tk.antoine_roux.wiki.ControllerHandlers#jobRequest(JobRequest)}
*/
ConcurrentLinkedQueue<Job> jobQueue = new ConcurrentLinkedQueue<>();
public void stackJob(Job newJob) {
this.jobQueue.add(newJob);
}
public Optional<Job> popJob(JobRequest jobRequest) {
return Optional.ofNullable(this.jobQueue.poll());
}
}