Commit graph

476 commits

Author SHA1 Message Date
Sönke Ludwig
2480f6bb67 Allow switchToTask to be called within a yield lock.
Enables waking up other tasks from within a yield lock (executed after the yield lock is lifted).
2018-09-09 11:35:39 +02:00
Sönke Ludwig
897fee84ea Free resources associated with waitForDataAsync as early as possible.
Instead of letting the GC clean up at an undefined point in time.
2018-09-03 13:45:53 +02:00
Sönke Ludwig
0b638634c9 Fix waitForDataAsync compilation error for callbacks that have scoped destruction. 2018-09-03 12:35:05 +02:00
Sönke Ludwig
9b2aa13ef4 Fix possible infinite loop in TaskScheduler.process.
Fixes a discrepancy in TaskFiberQueue between empty and length, which causes process() to never return, thus processing events without timeout indefinitely.
2018-08-26 13:03:14 +02:00
Sönke Ludwig
fae7d3e93d
Revert non-compiling change. 2018-07-09 11:58:25 +02:00
Sönke Ludwig
20558e4416
Update change log and bump version number 2018-07-09 09:20:55 +02:00
Sönke Ludwig
5f18693c49
Mark the Path(Segment) constructor as nothrow. 2018-07-09 09:19:35 +02:00
Sönke Ludwig
360f129381
Fix typo 2018-07-09 09:18:59 +02:00
Anton Fediushin
7514f1183e Fix logger colours to make it look good on black and white background 2018-06-09 15:54:24 +02:00
Sönke Ludwig
ecb46db199 Bump version number. 2018-06-05 12:45:01 +02:00
Sönke Ludwig
61bfbbbac3
Merge pull request #81 from vibe-d/fix_no_loop_message_processing
Fix event processing when calling yield() outside of an event loop.
2018-06-05 12:44:12 +02:00
Sönke Ludwig
463f4e4efb Disable graceful shutdown for SIGABRT on Windows.
Since this is meant specifically for killing the process in bad program states, invoking the normal event loop shutdown code is too risky.
2018-06-05 12:01:20 +02:00
Sönke Ludwig
ebd7cd7393 Fix event processing when calling yield() outside of an event loop.
The exit flag was erroneously set, disabling any event processing during yield() calls when not inside an event loop.
2018-06-05 11:37:58 +02:00
Sönke Ludwig
dfd3d2fd70
Bump version number 2018-04-08 17:58:16 +02:00
Sönke Ludwig
d4c5620d70
Merge pull request #77 from Boris-Barboris/manualevent_overflow
fix integer overflow protection absence for LocalManualEvent
2018-04-08 17:21:14 +02:00
Sönke Ludwig
fd92a7f555 Fix Task.running and Task.yield directly after runTask/yieldLock.
The status of the task was erroneously reported as not running until the task was actually executed for the first time (which only happens after the yield lock has been lifted).
2018-04-08 01:30:43 +02:00
Boris-Barboris
788973f628 same measures for ManualEvent 2018-03-30 12:59:24 +00:00
Boris-Barboris
bf9d736c4f another way around. Fix typo in comment. 2018-03-30 10:06:44 +00:00
Boris-Barboris
489b35539b fix comparison in doWait 2018-03-30 09:28:45 +00:00
Boris-Barboris
a840c51c5d fix integer overflow protection absence for LocalManualEvent 2018-03-30 09:17:09 +00:00
Boris-Barboris
eea57f8914 MonoTime in loopWithTimeout, and other read tweaks.
MonoTime is more robust and does not involve sophisticated timezone
shenanigans, making it better suited for networking operations.
Fixes #39.
This commit also distinguishes read timeout exception as Exception child
ReadTimeoutException, wich is thrown from loopWithTimeout function.
Optimistic read branch for tcp socket improves performance on
granular reads.
2018-03-23 06:45:05 +00:00
Sönke Ludwig
2006ace251 Bump version number 2018-03-18 21:36:23 +01:00
Sönke Ludwig
e2eef799f8 Fix cancellation of connectTCP in case of early errors.
Certain errors will result in an invalid handle to be returned from eventDriver.sockets.connectStream. In that case it is invalid to call cancelConnect.

Also adds an additional debug log message including a stack trace in case of exceptions thrown from connection handlers.
2018-03-18 12:13:13 +01:00
Sönke Ludwig
88bcae036c
Merge pull request #74 from vibe-d/fix_multithread_destruction
Allow destructors to run in foreign threads. Fixes #69.
2018-03-18 11:09:43 +01:00
Sönke Ludwig
58dc8459c2
Merge pull request #73 from vibe-d/interfaceproxy_tests
Add unit test for postblit behavior of InterfaceProxy.
2018-03-17 14:30:13 +01:00
Sönke Ludwig
2c63aa5c5c Allow destructors to run in foreign threads. Fixes #69.
This change modifies destructors to anticipate that they can be called form a foreign thread if the GC is involved. The actual release of the reference will then happen deferred in the original thread.
2018-03-16 18:06:53 +01:00
Sönke Ludwig
967654f175 Add unit test for postblit behavior of InterfaceProxy. 2018-03-16 18:00:56 +01:00
Thomas Weyn
b7e0194414 Re-introduced setCommandLineArgs from vibe-d:core-0.8.2 (pull/1916) 2018-03-14 22:04:20 +01:00
Sönke Ludwig
8ee5f4460c Fix compilation of ConnectionPool!struct. Fixes vibe-d/vibe.d#2109.
ConnectionPool!TCPConnection used to work with the old vibe-d:core implementation, but now failed, because TCPConnection is a struct. All assumptions about `Connection` being a class have been remove in this commit.
2018-03-11 00:07:42 +01:00
Sönke Ludwig
eb3620056f Ensure async lambdas are templates to fix LDC linker errors. Fixes #65.
If the lambda is a concrete function, two different versions will end up for it in the final binary on macOS when compiled with LDC. Using argument inference works around that issue.
2018-03-08 14:24:22 +01:00
Sönke Ludwig
a1a0d52fe6
Merge pull request #67 from vibe-d/issue_66_yield_exit_eventloop
Don't exit event loop prematurely.
2018-03-07 10:39:55 +01:00
Sönke Ludwig
7703cc675f Fix a race-condition in TaskPool.
The lock that should surround the foreach loop was given up prematurely.
2018-03-07 10:39:28 +01:00
Sönke Ludwig
66c9aeea57 Don't exit event loop prematurely. Fixes #66.
Idle processing needs to check whether there are still tasks scheduled to be resumed before setting the exit flag when there are no more waiters (I/O etc.).
2018-03-06 23:41:56 +01:00
Sönke Ludwig
eb046e2295 Fix deprecation warnings on DMD 2.079.0. 2018-03-06 20:13:59 +01:00
Sönke Ludwig
595beb2c60 Bump version number. 2018-02-26 20:40:28 +01:00
Sönke Ludwig
6aa5cddf33
Merge pull request #62 from FraMecca/master
TCPConnection.waitForDataAsync
2018-02-26 20:33:53 +01:00
Sönke Ludwig
57d516a82b
fixup 2018-02-26 19:40:13 +01:00
Sönke Ludwig
e33cf567ec
Change callback semantics of waitForDataAsync
Also adds a documentation comment to specify the semantics.
2018-02-26 13:15:24 +01:00
Francesco Mecca
99e2873cc0 assert and stronger condition on TCPConnection.waitForDataAsync
assert and stronger condition on TCPConnection.waitForDataAsync
2018-02-24 21:32:54 +01:00
Francesco Mecca
20e32cf327 added Timer and enum return to TCPConnection.waitForDataAsync 2018-02-23 00:27:04 +00:00
Sönke Ludwig
2653c8c5e0 Always remove task from queue when switching to it. Fixes #58.
Previously the task was only removed if switchTo was called from another task. Now it also gets removed when switchTo (e.g. due to a runTask() call) gets called form outside of a task.
2018-02-23 01:25:13 +01:00
Sönke Ludwig
d2146e3881 Fix shutdown of the worker thread pool.
Shuts down the pool before terminating the threads to avoid accessing an event thread waiter slot that is not associated with a valid eventcore driver anymore.
2018-02-22 20:10:08 +01:00
Sönke Ludwig
ae0b326fbd Remove noisy log message. 2018-02-22 14:09:20 +01:00
Francesco Mecca
0d6ba62f51 added TCPConnection.waitForDataAsync 2018-02-21 22:17:18 +00:00
Sönke Ludwig
e4eaaddbba Make high-frequency log messages in the task scheduler optional.
Requires -debug=VibeTaskLog to enable them now.
2018-02-14 13:11:51 +01:00
Sönke Ludwig
59b25701ac Remove DMD 2.070.x compatibility code. 2018-02-14 13:10:34 +01:00
Sönke Ludwig
ff26c31a42
Merge pull request #46 from vibe-d/total_cpus
Use std.parallelism.totalCPUs to implement logicalProcessorCount.
2018-02-14 13:09:02 +01:00
Sönke Ludwig
83515e4055
Merge pull request #51 from wilzbach/hexstring
Replace deprecated hexstring with hexString
2018-02-14 13:08:30 +01:00
Pavel Chebotarev
13e6c2aa41 Fix incorrect return value in TCPConnection.leastSize() 2018-01-27 18:53:16 +03:00
Sebastian Wilzbach
6107c1d807 Replace deprecated hexstring with hexString 2018-01-25 08:43:13 +01:00