mirror of https://github.com/poanetwork/quorum.git
35 lines
814 B
Go
35 lines
814 B
Go
|
package lane
|
||
|
|
||
|
// Queue is a FIFO (First in first out) data structure implementation.
|
||
|
// It is based on a deque container and focuses its API on core
|
||
|
// functionalities: Enqueue, Dequeue, Head, Size, Empty. Every operations time complexity
|
||
|
// is O(1).
|
||
|
//
|
||
|
// As it is implemented using a Deque container, every operations
|
||
|
// over an instiated Queue are synchronized and safe for concurrent
|
||
|
// usage.
|
||
|
type Queue struct {
|
||
|
*Deque
|
||
|
}
|
||
|
|
||
|
func NewQueue() *Queue {
|
||
|
return &Queue{
|
||
|
Deque: NewDeque(),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Enqueue adds an item at the back of the queue
|
||
|
func (q *Queue) Enqueue(item interface{}) {
|
||
|
q.Prepend(item)
|
||
|
}
|
||
|
|
||
|
// Dequeue removes and returns the front queue item
|
||
|
func (q *Queue) Dequeue() interface{} {
|
||
|
return q.Pop()
|
||
|
}
|
||
|
|
||
|
// Head returns the front queue item
|
||
|
func (q *Queue) Head() interface{} {
|
||
|
return q.Last()
|
||
|
}
|