ensure head index is within range

This commit is contained in:
chrislu 2024-05-05 12:20:08 -07:00
parent 253ec73a17
commit a5645d50a7

View File

@ -95,10 +95,16 @@ func (q *BufferedQueue[T]) Dequeue() (T, bool) {
return a, false
}
q.maybeAdjustHeadIndex()
job := q.head.items[q.head.headIndex]
q.head.headIndex++
q.count--
return job, true
}
func (q *BufferedQueue[T]) maybeAdjustHeadIndex() {
if q.head.headIndex == q.chunkSize {
q.last.next = q.head
q.head = q.head.next
@ -113,8 +119,6 @@ func (q *BufferedQueue[T]) Dequeue() (T, bool) {
// fmt.Printf("Node: %+v\n", p)
//}
}
return job, true
}
func (q *BufferedQueue[T]) PeekHead() (T, bool) {
@ -126,6 +130,8 @@ func (q *BufferedQueue[T]) PeekHead() (T, bool) {
return a, false
}
q.maybeAdjustHeadIndex()
job := q.head.items[q.head.headIndex]
return job, true
}