- package v2
-
- import (
- "github.com/Workiva/go-datastructures/queue"
- )
-
- // Event is the type that can be added to the priority queue.
- type Event queue.Item
-
- type priority interface {
- Compare(other queue.Item) int
- Priority() int
- }
-
- type priorityLow struct{}
- type priorityNormal struct{}
- type priorityHigh struct{}
-
- func (p priorityLow) Priority() int {
- return 1
- }
-
- func (p priorityNormal) Priority() int {
- return 2
- }
-
- func (p priorityHigh) Priority() int {
- return 3
- }
-
- func (p priorityLow) Compare(other queue.Item) int {
- op := other.(priority)
- if p.Priority() > op.Priority() {
- return 1
- } else if p.Priority() == op.Priority() {
- return 0
- }
- return -1
- }
-
- func (p priorityNormal) Compare(other queue.Item) int {
- op := other.(priority)
- if p.Priority() > op.Priority() {
- return 1
- } else if p.Priority() == op.Priority() {
- return 0
- }
- return -1
- }
-
- func (p priorityHigh) Compare(other queue.Item) int {
- op := other.(priority)
- if p.Priority() > op.Priority() {
- return 1
- } else if p.Priority() == op.Priority() {
- return 0
- }
- return -1
- }
-
- type noOpEvent struct {
- priorityLow
- }
-
- var noOp = noOpEvent{}
|