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