package monitor import "github.com/golang-collections/go-datastructures/queue" type Queue struct { queue *queue.PriorityQueue } func newQueue() *Queue { return &Queue{ queue: queue.NewPriorityQueue(1), } } func (q *Queue) Push(i *Item) { q.queue.Put(i) } func (q *Queue) Pop() *Item { is, err := q.queue.Get(1) if err != nil { return nil } if len(is) < 1 { return nil } if is[0] == nil { return nil } return is[0].(*Item) } func (q *Queue) Peek() *Item { i := q.queue.Peek() if i == nil { return nil } return i.(*Item) } func (q *Queue) Len() int { return q.queue.Len() }