From ed68bf7cd6503bba782fe10fde3aadbe74ababdb Mon Sep 17 00:00:00 2001 From: "Tristan B. Velloza Kildaire" Date: Sun, 26 Mar 2023 18:31:52 +0200 Subject: [PATCH] - Moved `Watcher` and `Manager` modules to their own package - Ensured `Watcher`'s constructor is package-level accessible only Manager - The constructor now creates an instance of `Watcher` - Added a `start()` method which calls `watcher.start()` --- source/tristanable/{ => manager}/manager.d | 12 ++++++++++-- source/tristanable/manager/package.d | 3 +++ source/tristanable/{ => manager}/watcher.d | 6 +++--- source/tristanable/package.d | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) rename source/tristanable/{ => manager}/manager.d (85%) create mode 100644 source/tristanable/manager/package.d rename source/tristanable/{ => manager}/watcher.d (86%) diff --git a/source/tristanable/manager.d b/source/tristanable/manager/manager.d similarity index 85% rename from source/tristanable/manager.d rename to source/tristanable/manager/manager.d index 60322d9..64967be 100644 --- a/source/tristanable/manager.d +++ b/source/tristanable/manager/manager.d @@ -1,12 +1,12 @@ /** * Management of a tristanable instance */ -module tristanable.manager; +module tristanable.manager.manager; import std.socket; import tristanable.queue : Queue; import core.sync.mutex : Mutex; -import tristanable.watcher : Watcher; +import tristanable.manager.watcher : Watcher; /** * Manages a provided socket by spawning @@ -49,6 +49,14 @@ public class Manager { this.socket = socket; this.queuesLock = new Mutex(); + this.watcher = new Watcher(this, socket); + } + + // TODO: comment + // Starts the watcher + public void start() + { + watcher.start(); } diff --git a/source/tristanable/manager/package.d b/source/tristanable/manager/package.d new file mode 100644 index 0000000..fc15e0f --- /dev/null +++ b/source/tristanable/manager/package.d @@ -0,0 +1,3 @@ +module tristanable.manager; + +public import tristanable.manager.manager : Manager; \ No newline at end of file diff --git a/source/tristanable/watcher.d b/source/tristanable/manager/watcher.d similarity index 86% rename from source/tristanable/watcher.d rename to source/tristanable/manager/watcher.d index 31b9ac4..2fd841f 100644 --- a/source/tristanable/watcher.d +++ b/source/tristanable/manager/watcher.d @@ -1,7 +1,7 @@ -module tristanable.watcher; +module tristanable.manager.watcher; import core.thread : Thread; -import tristanable.manager : Manager; +import tristanable.manager.manager : Manager; import std.socket; /** @@ -27,7 +27,7 @@ public class Watcher : Thread // TODO: make package-level in a way such // ... that only Manager can access this constructor // TODO: Add constructor doc - this(Manager manager, Socket socket) + package this(Manager manager, Socket socket) { this.manager = manager; this.socket = socket; diff --git a/source/tristanable/package.d b/source/tristanable/package.d index c4f6211..3bcc702 100644 --- a/source/tristanable/package.d +++ b/source/tristanable/package.d @@ -7,7 +7,7 @@ module tristanable; * Interface which manages a provided socket * and enqueuing and dequeuing of queues */ -public import tristanable.manager : Manager; +public import tristanable.manager; // TODO: In future make `QueueItem` just `TaggedMessage` /**