2020-09-29 11:57:25 +02:00
|
|
|
module tristanable.queue;
|
|
|
|
|
2023-02-26 22:24:49 +02:00
|
|
|
import libsnooze;
|
|
|
|
import core.sync.mutex : Mutex;
|
|
|
|
|
2023-02-26 21:55:13 +02:00
|
|
|
public class Queue
|
2020-09-29 11:57:25 +02:00
|
|
|
{
|
2023-02-26 22:24:49 +02:00
|
|
|
/**
|
|
|
|
* Everytime a thread calls `.dequeue()` on this queue
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
private Event event;
|
|
|
|
|
|
|
|
private QueueItem queue;
|
|
|
|
private Mutex queueLock;
|
|
|
|
|
|
|
|
|
2023-02-26 21:55:13 +02:00
|
|
|
private this()
|
|
|
|
{
|
2023-02-26 22:24:49 +02:00
|
|
|
this.queueLock = new Mutex();
|
|
|
|
}
|
2020-09-29 11:57:25 +02:00
|
|
|
|
2023-02-26 22:24:49 +02:00
|
|
|
public void dequeue()
|
|
|
|
{
|
|
|
|
// TODO: Make us wait on the event (optional with a time-out)
|
|
|
|
|
|
|
|
// TODO: Lock queue
|
|
|
|
queueLock.lock();
|
|
|
|
|
|
|
|
// TODO: Get item off queue
|
|
|
|
|
|
|
|
// TODO: Unlock queue
|
|
|
|
queueLock.unlock();
|
2023-02-26 21:55:13 +02:00
|
|
|
}
|
2020-09-29 11:57:25 +02:00
|
|
|
|
2023-02-26 21:55:13 +02:00
|
|
|
public static Queue newQueue(ulong queueID)
|
|
|
|
{
|
|
|
|
Queue queue;
|
2020-09-29 11:57:25 +02:00
|
|
|
|
2023-02-26 21:55:13 +02:00
|
|
|
// TODO: Implement me
|
2020-09-29 11:57:25 +02:00
|
|
|
|
2023-02-26 21:55:13 +02:00
|
|
|
return queue;
|
|
|
|
}
|
2023-02-26 22:24:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public class QueueItem
|
|
|
|
{
|
|
|
|
|
2020-09-29 11:57:25 +02:00
|
|
|
}
|