| // 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 |
| } |