Added `generateQueue()` to create random queues for those who don't care about reserved ids

This commit is contained in:
Tristan B. Velloza Kildaire 2021-09-08 13:40:39 +02:00
parent a193993c0d
commit 7a60a31e0a
1 changed files with 43 additions and 0 deletions

View File

@ -62,6 +62,49 @@ public final class Manager
return matchingQueue;
}
/**
* Returns a new queue with a new ID,
* if all IDs are used then it returns
* null
*
* Use this if you don't care about reserving
* queues IDs and just want a throwaway queue
*/
public Queue generateQueue()
{
/* Newly generated queue */
Queue newQueue;
queuesLock.lock();
ulong curGuess = 0;
bool bad = true;
reguess: while(bad)
{
foreach(Queue queue; queues)
{
if(queue.getTag() == curGuess)
{
curGuess++;
continue reguess;
}
}
bad = false;
}
/* Create the new queue with the free id found */
newQueue = new Queue(curGuess);
/* Add the queue */
queues ~= newQueue;
queuesLock.unlock();
return newQueue;
}
public void addQueue(Queue queue)
{
queuesLock.lock();