summaryrefslogtreecommitdiff
path: root/priority_queue/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'priority_queue/interface.go')
-rw-r--r--priority_queue/interface.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/priority_queue/interface.go b/priority_queue/interface.go
new file mode 100644
index 00000000..9efa4652
--- /dev/null
+++ b/priority_queue/interface.go
@@ -0,0 +1,31 @@
+package priorityqueue
+
+type Queue interface {
+ Insert(item Item)
+ ExtractMin() Item
+ Len() uint64
+}
+
+// Item represents binary heap item
+type Item interface {
+ // ID is a unique item identifier
+ ID() string
+
+ // Priority returns the Item's priority to sort
+ Priority() int64
+
+ // Body is the Item payload
+ Body() []byte
+
+ // Context is the Item meta information
+ Context() ([]byte, error)
+
+ // Ack - acknowledge the Item after processing
+ Ack() error
+
+ // Nack - discard the Item
+ Nack() error
+
+ // Requeue - put the message back to the queue with the optional delay
+ Requeue(headers map[string][]string, delay int64) error
+}