From 7a60a31e0a86c973cf82ff1030096438c2e0c4ba Mon Sep 17 00:00:00 2001 From: "Tristan B. Kildaire" Date: Wed, 8 Sep 2021 13:40:39 +0200 Subject: [PATCH] Added `generateQueue()` to create random queues for those who don't care about reserved ids --- source/tristanable/manager.d | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/source/tristanable/manager.d b/source/tristanable/manager.d index a3cc5db..d815566 100644 --- a/source/tristanable/manager.d +++ b/source/tristanable/manager.d @@ -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();