Implements a priority queue version of the SchedulingQueue. All methods are thread-safe.
type PrioritySchedulingQueue struct {
// contains filtered or unexported fields
}
func NewPrioritySchedulingQueue(lessFn collections.LessFunc[*pipeline.QueuedPodInfo]) *PrioritySchedulingQueue
func (pq *PrioritySchedulingQueue) Close()
func (pq *PrioritySchedulingQueue) Dequeue() *pipeline.QueuedPodInfo
func (pq *PrioritySchedulingQueue) Enqueue(podInfo *pipeline.QueuedPodInfo)
func (pq *PrioritySchedulingQueue) IsClosed() bool
func (pq *PrioritySchedulingQueue) Len() int
Used to queue incoming pods for the scheduling pipeline.
All method implementations must be thread-safe.
type SchedulingQueue interface {
// Adds a new pod to the scheduling queue or replaces an existing pod with the same key,
// if it already exists in the queue.
//
// If the queue is closed, this method does nothing.
Enqueue(podInfo *pipeline.QueuedPodInfo)
// Dequeues the next pod for scheduling.
// If no pod is currently waiting, this method will block until there is such a pod or the queue is closed.
//
// Returns the next queued pod or nil if the queue has been closed.
Dequeue() *pipeline.QueuedPodInfo
// Closes this queue and causes all pending Dequeue() operations to return nil.
Close()
// Returns true if the queue is closed.
IsClosed() bool
// Returns the number of pods currently in the queue.
Len() int
}