package util import "sync" type SerialQueue struct { items [][]byte lock sync.Mutex } func (q *SerialQueue) Enqueue(item []byte) { q.lock.Lock() defer q.lock.Unlock() q.items = append(q.items, item) } func (q *SerialQueue) Dequeue() ([]byte, bool) { q.lock.Lock() defer q.lock.Unlock() if len(q.items) == 0 { return nil, false } item := q.items[0] q.items = q.items[1:] return item, true }