diff --git a/roomserver/internal/input/input_fifo.go b/roomserver/internal/input/input_fifo.go index d6f4b6d15..694b17245 100644 --- a/roomserver/internal/input/input_fifo.go +++ b/roomserver/internal/input/input_fifo.go @@ -29,6 +29,9 @@ func (q *fifoQueue) push(frame *inputTask) { } } +// pop returns the first item of the queue, if there is one. +// The second return value will indicate if a task was returned. +// You must check this value, even after calling wait(). func (q *fifoQueue) pop() (*inputTask, bool) { q.mutex.Lock() defer q.mutex.Unlock() @@ -47,6 +50,8 @@ func (q *fifoQueue) pop() (*inputTask, bool) { return frame, true } +// wait returns a channel which can be used to detect when an +// item is waiting in the queue. func (q *fifoQueue) wait() <-chan struct{} { q.mutex.Lock() defer q.mutex.Unlock()