- Restructured `listener.d` and `queue.d` into a new package called `queue`

- Added listener array (`SList`) and lock to `Queue`
This commit is contained in:
Tristan B. Velloza Kildaire 2023-04-07 12:41:04 +02:00
parent 077dfe457b
commit 22567fb3d4
4 changed files with 39 additions and 8 deletions

View File

@ -11,8 +11,9 @@ public import tristanable.manager;
/**
* A queue of queue items all of the same tag
* and queue-related facilities
*/
public import tristanable.queue : Queue;
public import tristanable.queue;
/**
* Error handling type definitions

View File

@ -1,4 +1,4 @@
module tristanable.listener;
module tristanable.queue.listener;
// TODO: Implement me

View File

@ -0,0 +1,16 @@
/**
* Queue type and related facilities
*/
module tristanable.queue;
/**
* The Queue type for enqueueing and dequeueing messages
*/
public import tristanable.queue.queue : Queue;
/**
* Interface type for definining listeners which can be hooked
* to queue actions
*/
public import tristanable.queue.listener : TListener;

View File

@ -1,7 +1,9 @@
/**
* A queue of queue items all of the same tag
*/
module tristanable.queue;
module tristanable.queue.queue;
import tristanable.queue.listener : TListener;
// TODO: Examine the below import which seemingly fixes stuff for libsnooze
import libsnooze.clib;
@ -25,6 +27,11 @@ version(unittest)
*/
public class Queue
{
/**
* This queue's unique ID
*/
private ulong queueID;
/**
* The libsnooze event used to sleep/wake
* on queue events
@ -40,12 +47,19 @@ public class Queue
* The lock for the message queue
*/
private Mutex queueLock;
/**
* This queue's unique ID
*/
private ulong queueID;
/**
* Attached queue listeners
*/
private SList!(TListener) listeners;
/**
* Lock for the listeners queue
*/
private Mutex listenersLock;
// TODO: Add listener add/remove methods
// TODO: On queue actions add a notificaiton call to the listeners
/**
* Constructs a new Queue and immediately sets up the notification