Tristan B. Velloza Kildaire
7621ee5343
Completely overhauled Eventy system for the v0.4.0 release
...
Removed the event-loop for a better system (for now) whereby we just dispatch signal handlers on the call to `push(Event)`.
In a future release I hope to bring the event loop back but in a signal-based manner, such that we can support deferred events and priorities and such
2022-11-28 13:39:06 +02:00
Tristan B. Velloza Kildaire
6392c92349
Cleaned up
2022-11-26 18:39:00 +02:00
Tristan B. Velloza Kildaire
28d64f799e
Switch back to YIELD HoldOffMode for now (gives best performance)
...
We will have to investigate load average highness and ways to deal with it later
2022-11-26 18:19:21 +02:00
Tristan B. Velloza Kildaire
cc75eefa15
Try 50ms
2022-11-26 18:16:07 +02:00
Tristan B. Velloza Kildaire
e75e3f732d
Added missing `eventy.config` import to the `package.d` module
2022-11-26 18:00:24 +02:00
Tristan B. Velloza Kildaire
4fed9fc780
Added missing comment to config.d
2022-11-26 17:58:15 +02:00
Tristan B. Velloza Kildaire
5bbb6d804a
Added last missing doc header to a method in engine.d
2022-11-26 17:43:44 +02:00
Tristan B. Velloza Kildaire
6cfaa9824e
Added missing comments
2022-11-26 17:37:38 +02:00
Tristan B. Velloza Kildaire
00b8eb82be
Removed redundant imports
2022-11-26 17:36:11 +02:00
Tristan B. Velloza Kildaire
a501de15d3
Removed commented out code
...
Moved testing imports within each unit test
Added a new unit test which tests the yield-based HoldOffMode
Neteaned up imports
2022-11-26 17:31:03 +02:00
Tristan B. Velloza Kildaire
59d0253b61
Implemented `agressiveTryLock` check so the user can choose whether or not to yield if a fail to grab the lock occurs
2022-11-26 17:26:05 +02:00
Tristan B. Velloza Kildaire
3603c567e8
Removed deprecated `setSleep(Duration)`
...
Added `getConfig()/setConfig(EngineSettings)` to retrieve and update the configuration of the Engine on the fly
Privated `getTypes()` method for now as it is not implemented yet
2022-11-26 17:23:40 +02:00
Tristan B. Velloza Kildaire
be44514a51
Cleaned up `shutdown()` and added some TODOs
2022-11-26 17:14:20 +02:00
Tristan B. Velloza Kildaire
e8b78156b7
Added support for graceful shutdown
2022-11-26 17:12:41 +02:00
Tristan B. Velloza Kildaire
490cfe85d6
Implemented `hasPendingEvents()` to check whether there are any pending events at all
...
Use `isPendingEvents()` is unit tests to ensure that we actually are able to see ALL events pushed dispatched before we, possibly, pre-maturely shutdown the engine with `shutdown()`
Removed unused function `runner(Event)`
Added new commented out test case
Formatted method documentation of some methods to conform to D's style
2022-11-26 17:07:17 +02:00
Tristan B. Velloza Kildaire
03dfe3ccfd
Removed TODO comment
...
Added configuration system
Introduced two modes of "sleeping" the event loop, sleep-based and yield-based (with 200ms sleep-mode as the default)
Disabled `setSleep(Duration)` for now
2022-11-26 16:52:21 +02:00
Tristan B. Velloza Kildaire
b67f61b848
Added isSignalExists(ulong id) to check whether a signal handler exists for a given event id
2022-05-26 14:04:34 +02:00
Tristan B. Velloza Kildaire
263188fa64
Remove todo that has since been completed
2022-05-19 16:50:56 +02:00
Tristan B. Velloza Kildaire
d0c4d12155
Make unit testing method private within module
2022-05-19 16:49:52 +02:00
Tristan B. Velloza Kildaire
9a26ed7011
Removed swear words
2022-05-19 16:49:25 +02:00
Tristan B. Velloza Kildaire
c6082f3941
Unit test: Shutdown engine after testing
2022-05-19 16:48:09 +02:00
Tristan B. Velloza Kildaire
692660772a
Added rudimentary shutdown() method
2022-04-07 10:11:59 +02:00
Tristan B. Velloza Kildaire
f649a63a77
Re-worked event system
2022-01-16 14:32:00 +02:00
Tristan B. Velloza Kildaire
f1a13623a6
Added comment
2022-01-16 14:22:18 +02:00
Tristan B. Velloza Kildaire
c2bc5bc902
Added optional payload support
2022-01-16 14:21:09 +02:00
Tristan B. Kildaire
72a35976e1
Added a Javadoc
2021-12-27 13:04:30 +02:00
Tristan B. Kildaire
3e826aa1ac
Added a Javadoc
2021-12-27 13:03:55 +02:00
Tristan B. Kildaire
f87a7f44ca
Added some Javadocs
2021-12-27 13:02:32 +02:00
Tristan B. Velloza Kildaire
9cc4de215c
Made public
2021-09-15 14:55:11 +02:00
Tristan B. Velloza Kildaire
a86ff8fda2
Cleaned up
2021-09-15 14:54:59 +02:00
Tristan B. Velloza Kildaire
c1c4225800
Create package.d
2021-09-08 12:51:53 +02:00
Tristan B. Velloza Kildaire
7b835b39de
Fixed error where no queues could be added
2021-09-08 12:39:40 +02:00
Tristan B. Velloza Kildaire
206775937e
Added missing exception definition
2021-09-08 12:37:29 +02:00
Tristan B. Velloza Kildaire
ca61e7a8e1
Use ~ opAssign operator instead
2021-09-08 12:37:20 +02:00
Tristan B. Velloza Kildaire
f5ed565912
Don't waste time spinning on a mutex that cannot be unlocked, yield as it may be unlocked by another process, if not then whenever we get back here try again (repeat if same result), else fall through with lock, execute event loop, unlock and yield (as per normal)
2021-09-07 14:12:31 +02:00
Tristan B. Velloza Kildaire
217688767a
Added yield to stop starving the mutex on our side. They (API users) could of course still starve it on their side, so they should use functions not to rapidly else event-loop gets no time to dispatch events they add.
2021-09-07 14:05:31 +02:00
Tristan B. Velloza Kildaire
a6aa3486ad
Added implementaiton for Signal's `handles(ulong)`
2021-09-01 15:33:39 +02:00
Tristan B. Velloza Kildaire
e19421f4e5
Added some methods
2021-09-01 15:33:26 +02:00
Tristan B. Velloza Kildaire
a7a3a09564
Set the id for the Event
2021-09-01 15:33:15 +02:00
Tristan B. Velloza Kildaire
972a12efed
Fixed use of the Ranges, I recall how it works now
2021-09-01 15:33:07 +02:00
Tristan B. Velloza Kildaire
3a2637605a
Fixed bug where mutex lock object was 0 addr
2021-09-01 14:50:39 +02:00
Tristan B. Velloza Kildaire
fd4bcb7ecd
Added multi-threaded dispatcher
2021-08-31 11:48:26 +02:00
Tristan B. Velloza Kildaire
8da3dd2b4a
Loop through queue and find matcxhing signal handlers for the first event of each queue
2021-08-31 11:39:41 +02:00
Tristan B. Velloza Kildaire
349f3d3ddd
Added queues for Queues and Signals and respective Mutexes
2021-08-31 11:34:41 +02:00
Tristan B. Velloza Kildaire
306122052c
Added missing ID field
2021-08-31 11:34:29 +02:00
Tristan B. Velloza Kildaire
333ae361a8
Added a few methods for adding to the queue, checking if it is empoty and popping from the queue
2021-08-31 11:34:22 +02:00
Tristan B. Velloza Kildaire
29afd37f38
Added a few methods for Signal and Engine
2021-08-28 11:41:21 +02:00
Tristan B. Velloza Kildaire
635bdf255e
Added stub types
2021-08-27 16:12:48 +02:00
Tristan B. Velloza Kildaire
bfa98ffee6
Added stub for Engine class
2021-08-27 15:53:19 +02:00