type removeFromFIFOFunc … type walkFunc … type fifo … type requestFIFO … func newRequestFIFO() fifo { … } func (l *requestFIFO) Length() int { … } func (l *requestFIFO) QueueSum() queueSum { … } func (l *requestFIFO) Enqueue(req *request) removeFromFIFOFunc { … } func (l *requestFIFO) Dequeue() (*request, bool) { … } func (l *requestFIFO) Peek() (*request, bool) { … } func (l *requestFIFO) getFirst(remove bool) (*request, bool) { … } func (l *requestFIFO) Walk(f walkFunc) { … } func addToQueueSum(sum *queueSum, req *request) { … } func deductFromQueueSum(sum *queueSum, req *request) { … }