Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewRequeueingQueue ¶
func NewRequeueingQueue() collection.Stack
NewRequeueingQueue for a queue that never loses elements, they are just added back onto the end of the queue on pop. Useful for when you don't want to keep track of an array and an index on an object.
func NewStringRequeuingQueue ¶
func NewStringRequeuingQueue() collection.StringStack
NewStringRequeuingQueue that is empty and ready to use.
Types ¶
type HashPriority ¶
type HashPriority interface {
Priority
GetHash() interface{}
}
HashPriority exposes both a priority function and Hash function.
type HashPriorityQueue ¶
type HashPriorityQueue interface {
// Size of this queue
Size() int
// Push the passed element onto this queue if it does not already exist in
// the queue.
Push(element HashPriority)
// Pop the highest priority element off the queue
Pop() (HashPriority, bool)
// Peek at the highest priority element without modifying the queue
Peek() (HashPriority, bool)
}
HashPriorityQueue prevents duplicate prioritized entries in a queue.
func NewHashPriorityQueue ¶
func NewHashPriorityQueue() HashPriorityQueue
NewHashPriorityQueue for queueing unique elements by priority.
type Priority ¶
type Priority interface {
// GetPriority of this element as an int where lower priority < higher priority
GetPriority() int
}
Priority is for use in collections that require elements to resolve their own priority.
type PriorityQueue ¶
type PriorityQueue interface {
// Size of this queue
Size() int
// Push the passed element onto this queue
Push(element Priority)
// Pop the highest priority element off the queue
Pop() (Priority, bool)
// Peek at the highest priority element without modifying the queue
Peek() (Priority, bool)
}
PriorityQueue for queueing elements that implement priority and returning elements in the order of highest to lowest priority.
func NewPriorityQueue ¶
func NewPriorityQueue() PriorityQueue
NewPriorityQueue for queueing elements according to their priority
type RateHashPriorityQueue ¶
type RateHashPriorityQueue interface {
HashPriorityQueue
// NoLimitPop the highest priority element off the queue ignoring the rate limit
// for the purpose of batching commands
NoLimitPop() (HashPriority, bool)
// Channel that can be used instead of Pop
Channel() <-chan HashPriority
// Stop this RateHashPriorityQueue so that it can be garbage collected.
Stop()
}
RateHashPriorityQueue allows prioritized unique elements to be emitted at a specific rate.
func NewRateHashPriorityQueue ¶
func NewRateHashPriorityQueue(n int, rate time.Duration) RateHashPriorityQueue
NewRateHashPriorityQueue that will return at max 'n' elements per 'rate' duration.