Added `generateQueue()` to create random queues for those who don't care about reserved ids
This commit is contained in:
parent
a193993c0d
commit
7a60a31e0a
|
@ -62,6 +62,49 @@ public final class Manager
|
||||||
return matchingQueue;
|
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)
|
public void addQueue(Queue queue)
|
||||||
{
|
{
|
||||||
queuesLock.lock();
|
queuesLock.lock();
|
||||||
|
|
Loading…
Reference in New Issue