Commit Graph

111 Commits

Author SHA1 Message Date
99c14bc699 Manager
- Changed from using D's dynamic arrays for the array of `Queue` objects to using an `SList!(T)` where `T` is the `Queue` type
- Implemented `getQueue(ulong)` which returns the `Queue` object with the matching id/tag, else throws an instance of `TristanabaleException`
- Implemented `registerQueue(Queue)` which will attempt to add the provided `Queue` given that a queue does not already exist with the provided queue's id; if that is the case then an instance of `TristanableException` is thrown

Queue

- Made the constructor take in the `ulong` queue ID
- Made the constructor publically accessible
- Implemented `getID()` which returns the `Queue`'s id as a `ulong`
- Removed the static method `newQueue(ulong)`

Unit test

- Added a unit test to test `getQueue(ulong)` when the queue cannot be found
- Added a unit test to test adding a queue and successfully retrieving it
2023-03-29 16:01:34 +02:00
454e7dd18e Watcher
- Moved TODO below already completed code

Exceptions

- Renamed `Error` to `ErrorType`
- Constructing a new `TristanableException` will now store the passed in `ErrorType`
- Added `getError()` to `TristanableException` which returns the stored `ErrorType`
- Added two new memebrs to enum `ErrorType`, namely `QUEUE_NOT_FOUND` and `QUEUE_ALREADY_EXISTS`
2023-03-29 15:57:51 +02:00
8942bd7f85 Watcher
- Added import for `bformat` and `encoding` module
- Documented `watch()`
- Added `bformat` read-and-decode `receiveMessage(Socket, ref byte[])` call followed by a `TaggedMessage.decode(byte[])` call
2023-03-27 21:58:04 +02:00
6b04a0325a TaggedMessage
- Added documentation for fields `tag` and `data`
- Added documentation for both constructors
- Added documentation for `getPayload()`, `getTag()`, `setPayload(byte[])` and `setTag(ulong)`
2023-03-27 16:20:26 +02:00
cd0eed6dda Encoding
- Added parameter-less (default) constructor marked as `private` to `TaggedMessage`
- Added decoding support in `decode(byte[])` which will return a new instance of `TaggedMessage`
- Added a unit test to test encoding and decoding
2023-03-27 16:02:39 +02:00
ef95b15a2d Merge branch 'nextgen' of github.com:deavmi/tristanable into nextgen 2023-03-27 15:43:10 +02:00
f75604eca9 - Attempt merge 2023-03-27 15:41:50 +02:00
83b2a11c80 Encoding
- Added stub class `TaggedMessage`
- Added constructor, static decoder (unimplemented), `encoder (implemented), getters and setters
- Added module `tristanable.encoding`
2023-03-27 15:40:20 +02:00
f36a6ba454 Package (tristanable)
- Added an import for `TaggedMessage` from module `tristanable.encoding`
2023-03-26 18:37:22 +02:00
a05bc3e2fd Manager
- Added stub `sendMessage(TaggedMessage)` which will encode into the tristanable format, then wrap into bformat and send over the socket
- Added import for `TaggedMessage` from `tristanable.encoding` module
2023-03-26 18:35:19 +02:00
ed68bf7cd6 - 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()`
2023-03-26 18:31:52 +02:00
88432ab8d5 Manager
- Added unit test TODO
2023-03-26 18:27:24 +02:00
0d740d6231 Watcher
- Added constructor which takes in an instance of `Manager` and an instance of `Socket`
2023-03-26 18:26:07 +02:00
80d870e41a Manager
- Added field `watcher` of type `Watcher`
2023-03-26 18:24:15 +02:00
de44080c6b Package (tristanable)
- Added public imports along with comments per each

Encoding

- Added a stub class, `TaggedMessage`, for encoding and decoding the tristanable byte payload

Exceptions

- Added `TristanableException` exception type along with the `Error` enum sub-type

Manager

- Added stub code for `Manager` to manage the queues and socket

Queue

- Added stub class representing a queue with a tag (`Queue`)

QueueItem

- Added stub class `QueueItem` which represents an item that is enqueued/dequeued onto a `Queue`

Watcher

- Added stub class `Watcher` which will manage the socket reading-wise
2023-03-26 18:22:15 +02:00
01a5d779c8 Package
- Added a title to the documentation to better describe what this library does

Dub

- Updated package description
- Added project website link
2023-03-03 17:49:32 +02:00
f8aa3b92cf Package
- Added imports that should be publically imported (exported into the user)
2023-03-03 17:47:23 +02:00
8828e3ffdd Manager
- Added an array of `Queue`(s) to the manager

Queue

- Added comments
- Initialize the libsnooze `Event` during construction of the `Queue` type

Dub

- Upgraded libsnooze from `0.2.7` to `0.2.9`

Repository

- Removed `dub.selections.json` file
- Added `dub.selections.json` to the `.gitignore`
2023-03-03 17:44:51 +02:00
e7f93cd78a - Upgraded to working version of libsnooze (compilation-wise)
- Fixed imports and missing definitions in `queue` module
2023-02-26 22:24:49 +02:00
17da826d07 Restarting project 2023-02-26 21:55:13 +02:00
e59dca0c4d this.flags was not set, resulting in the default .init for QueuePolicy being used and enforcing LENGHT_CAPPING by default even when default behaviour should be not to, per the constructors (this()'s) parameters 2022-03-19 13:29:32 +02:00
ad99ef63d9 Added TODO 2021-09-09 16:18:16 +02:00
b58fb718a7 Added some comments 2021-09-09 16:09:27 +02:00
ddd46f3388 Added some comments 2021-09-09 18:02:45 +02:00
df4d479e54 Throw an exception when trying to remove a queue with an id not in use by any queue 2021-09-09 18:01:14 +02:00
0c43e80cf6 Throw an exception when trying to add a queue with an id already in use by another queue 2021-09-09 18:00:59 +02:00
26bdcf7d83 Added comment 2021-09-09 11:30:44 +02:00
c241d06ea9 Added poll() which lets user check if the queue is empty or not 2021-09-09 11:21:19 +02:00
9c7d15dc89 corrected last commit 2021-09-08 22:09:48 +02:00
e1c28d9c11 Added getSocket() method to the Manager class 2021-09-08 22:08:03 +02:00
b4bf4d5af5 Fixed bug for shutdowns 2021-09-08 20:54:34 +02:00
e5a0a280bc Changed API 2021-09-08 20:50:22 +02:00
b060b30c44 Added sendMessage to bformat encode the final t-encoded message 2021-09-08 20:45:39 +02:00
1b88d1f8bf Added some exceptional stuff 2021-09-08 20:24:45 +02:00
88be3d08e3 Added exception class
ALso added `getQueues()` function
2021-09-08 19:21:33 +02:00
d9e5e54477 Added some todos for later 2021-09-08 14:29:27 +02:00
4f83991baf Added the ability to delete a queue
Updated todo
2021-09-08 14:24:58 +02:00
6a00c620ec Cleaned up import 2021-09-08 14:07:56 +02:00
a3ca66db2b Added the ability to set a max length for queues 2021-09-08 14:06:38 +02:00
3ce8bda7de Clean up 2021-09-08 13:51:28 +02:00
7ba3c9f1f7 Added package.d 2021-09-08 13:49:41 +02:00
445e008603 generateQueue() now uses new isValidTag(ulong) 2021-09-08 13:47:53 +02:00
d48cc4267e Clean up 2021-09-08 13:47:04 +02:00
3103adcb0f Removed uneeded function 2021-09-08 13:46:57 +02:00
e8d4e0ae20 addQueue() now uses recursive mutex capabilities with re-impkemented isValidTag() 2021-09-08 13:46:38 +02:00
ea32c7eef4 Re-implemented isValidTag(ulong) 2021-09-08 13:46:05 +02:00
384f286f83 Use recursive mutex capabilities 2021-09-08 13:42:25 +02:00
7a60a31e0a Added generateQueue() to create random queues for those who don't care about reserved ids 2021-09-08 13:40:39 +02:00
bfa4364a99 Added shutdown capability 2021-09-08 11:19:05 +02:00
5f16e8d5b0 Use DList 2021-09-08 11:14:03 +02:00