blob: ad68891de7210470fbc9ed2f65d7e2bfaa12bafe [file] [edit]
// Copyright 2026 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package nettest
type queue[T any] struct {
headPos int
head []T
tail []T
}
func (q *queue[T]) len() int {
return len(q.head[q.headPos:]) + len(q.tail)
}
func (q *queue[T]) push(v T) {
q.tail = append(q.tail, v)
}
func (q *queue[T]) pop() T {
var zero T
if q.headPos >= len(q.head) {
if len(q.tail) == 0 {
return zero
}
q.head, q.headPos, q.tail = q.tail, 0, q.head[:0]
}
v := q.head[q.headPos]
q.head[q.headPos] = zero
q.headPos++
return v
}