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
Martin Nowak
30102f9e3a
avoid Buffer type which creates a huge __initZ symbol
2018-01-14 04:43:14 +01:00
Sönke Ludwig
1ed1c85f76
Use std.parallelism.totalCPUs to implement logicalProcessorCount.
...
See vibe-d/vibe.d#2008 .
2018-01-10 18:28:26 +01:00
Sebastian Wilzbach
0eed0fe8b7
Use the stable stdx-allocator DUB package
2017-12-03 20:38:07 +01:00
Sönke Ludwig
2625397f91
Use asyncAwaitAny instead of asyncAwait to work around linker error.
2017-11-25 15:27:17 +01:00
Boris-Barboris
6634cbc645
switch to asyncAwait
2017-11-25 15:27:17 +01:00
Boris-Barboris
55e7866497
implement tcp connect timeout
2017-11-25 15:27:17 +01:00
Sönke Ludwig
dad84e8a46
Adjust DirectoryWatcher implementation for changed FileChange definition in eventcore.
2017-11-21 21:42:44 +01:00
Sönke Ludwig
8c68a4aeef
Bump version number.
2017-11-17 11:56:59 +01:00
Sönke Ludwig
094de42f97
Update change log.
2017-11-17 11:56:18 +01:00
Sönke Ludwig
2a106ebcbb
Add FileInfo.hidden.
2017-11-07 16:14:02 +01:00
Sönke Ludwig
fc89257afd
Fixup for c95306245f
.
2017-10-31 23:04:13 +01:00
Sönke Ludwig
c95306245f
Improve InterfaceProxy(Class).
...
- InterfaceProxyClass can now be allocated/freed using a custom allocator
- Non-copyable values can be moved into an InterfaceProxyClass instance
- Non-copyable values can be moved into an InterfaceProxy
2017-10-30 23:01:22 +01:00
Sönke Ludwig
b68d23f515
Add opCast(bool) to FreeListRef and remove opAssign with value type.
2017-10-30 22:58:30 +01:00
Sönke Ludwig
ecd981b1e1
Fix compile error in internal API.
2017-10-30 22:56:19 +01:00
Sönke Ludwig
340357d455
Let pipe() return the number of bytes written.
2017-10-30 22:55:54 +01:00
Sönke Ludwig
710c996666
Add assertion message.
2017-10-30 22:55:22 +01:00
Sönke Ludwig
874e174d38
Add const overload for Task.tid.
2017-10-24 09:44:54 +02:00
Sönke Ludwig
db449e3cb3
Fix implementation of TCPListener.bindAddress.
2017-09-28 23:52:39 +02:00
Sönke Ludwig
72540d7eaf
Work around DigitalMars/optlink#18 .
2017-09-27 17:43:08 +02:00
Sönke Ludwig
9fe9783443
Convert Waitable from struct to pure template to avoid heap closures.
...
Also fixes a case where ThreadLocalWaiter.emitSingle overlaps a call to .emit.
2017-09-27 16:41:11 +02:00
Sönke Ludwig
e32d818873
Add CircularDList.insertAfter.
2017-09-27 16:41:11 +02:00
Sönke Ludwig
a93b6e1cb1
Move log message to print before shutdown to avoid potential mixup with other log messages during shutdown.
2017-09-21 14:35:53 +02:00
Sönke Ludwig
9e0b5a7821
Fix access violation in the log module when called from a non-D thread.
2017-09-21 14:09:19 +02:00
Sönke Ludwig
a5628230c1
Fix setupWorkerThreads to actually use the provided thread count. See #35 .
2017-09-21 13:40:00 +02:00
Sönke Ludwig
dd05676c4e
Fix workerThreadCount to return the actual number of threads in the default worker pool. Fixes #35 .
2017-09-21 13:39:05 +02:00
Sönke Ludwig
0dbebac482
Add TaskPool.threadCount property.
2017-09-21 13:38:24 +02:00
Sönke Ludwig
8895f62a49
Fix parameter name.
2017-09-15 15:58:35 +02:00
Sönke Ludwig
333643d48e
Add interface_address parameter to UDPConnection.addMembership.
2017-09-15 15:54:59 +02:00
Sönke Ludwig
6cf2579206
Fix path construction from segment range with no internal separators.
2017-09-10 00:16:53 +02:00
Sönke Ludwig
cf914d8827
Update version.
2017-09-05 16:05:06 +02:00
Sönke Ludwig
2d0576a5fe
Implement the UDP multicast support methods.
2017-09-03 18:15:52 +02:00
Sönke Ludwig
7e1d6a7323
Add listenUDP overload taking a NetworkAddress.
2017-09-03 15:54:17 +02:00
Sönke Ludwig
1ef8d5206f
Fix handling of the "periodic" argument to the setTimer compatibility overload.
2017-09-03 15:46:50 +02:00
Sönke Ludwig
43260cf982
Log the fiber/task ID in the HTML logger.
2017-09-03 14:17:57 +02:00
Boris-Barboris
a590de154a
fix deadlocks, caused by second m_locks increment
2017-08-28 21:58:08 +00:00
Sönke Ludwig
544157c065
Fix return value for FileDescriptorEvent.wait.
2017-08-14 14:27:09 +02:00
Sönke Ludwig
62ee67091d
Enable support for timeouts in FileDescriptorEvent.wait.
2017-08-13 23:35:11 +02:00
Sönke Ludwig
5e979364cb
Fix whitespace.
2017-08-10 11:08:26 +02:00
Sönke Ludwig
24f4e5f70f
Resurrect GenericPath.startsWith.
...
Since the semantics are different w.r.t. path separators, the alternative suggested in the deprecation message is not valid. At least until the comparison/toString semantics of PathSegment have a profound definition, it will be kept around to avoid unneeded interruptions when upgrading to 0.8.x.
2017-08-10 10:09:01 +02:00
Sönke Ludwig
2777b0a6ff
Fix FileDescriptorEvent constructor to adhere to the given event mask.
2017-07-29 13:32:27 +02:00
Sönke Ludwig
a60828d6da
Mark more classes as final.
2017-07-23 15:04:11 +02:00
Sönke Ludwig
59ac459cdf
Mark all synchronization classes final.
...
Those classes are not meant as being derived from.
2017-07-23 14:57:48 +02:00
Sönke Ludwig
2ba6c2eca1
Bump version number.
2017-07-20 18:50:40 +02:00
Sönke Ludwig
f81c9175df
Mention that TCPListenOptions.distribute is deprecated.
2017-07-20 18:48:08 +02:00
Sönke Ludwig
be0de0a733
Add assertions for uninitialized LocalManualEvents.
2017-07-20 16:52:35 +02:00
Sönke Ludwig
a6eeae97f3
Fix DirectoryWatcher's creation of its LocalManualEvent.
2017-07-20 16:52:34 +02:00
Sönke Ludwig
f6736d13ab
Add test that reproduces the LocalManualEvent copy bug.
2017-07-20 16:14:47 +02:00
Sönke Ludwig
100dfc30ee
Add test that triggers the former bug in ThreadLocalWaiter.emit() and ensures FIFO emit order.
2017-07-20 16:10:18 +02:00
Sönke Ludwig
a4b36f08d3
Fix multiple issues in (Local)ManualEvent.
...
- Copying LocalManualEvent now works correctly, using reference counting
- ManualEvent correctly pins the reference to the thread-local waiter until it has finished emitting it
- ThreadLocalWaiter uses a doubly-linked list to manage task waiters (more efficient deletion, FIFO trigger order)
- Fixed a bug in ThreadLocalWaiter.emit() where the head element of the iterated list might already have stopped waiting, resulting in an invocation of a dangling TaskWaiter pointer
2017-07-20 15:57:44 +02:00
Sönke Ludwig
19db7732e6
Add nothrow annotations.
2017-07-20 13:36:27 +02:00
Sönke Ludwig
536fa09780
Add helper module with intrusive singly and doubly linked lists.
2017-07-20 13:34:39 +02:00
Sönke Ludwig
cfb4f83113
Add makeGCSafe/disposeGCSafe as GC safe variants of make/dispose.
...
If necessary, these will call GC.addRange/GC.removeRange to avoid dangling GC references.
2017-07-20 13:34:12 +02:00
Sönke Ludwig
4bccf6fcb5
Use StackSList for ThreadLocalWaiter and add simple loop detection.
...
This will have to be adjusted to use a circular list with the possibility to insert a pivot element, so that consumption of waiters is safe in all cases (see the comment at 1265).
2017-07-19 14:54:33 +02:00
Sönke Ludwig
d39bbf19c0
Avoid extra exception and allow toString of unspecified NetworkAddress values.
2017-07-19 14:50:20 +02:00
The Dlang Bot
c62f07d257
Merge pull request #24 from vibe-d/error_handling
...
Use abort() in case of uncaught Error exceptions.
merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
2017-07-19 10:50:25 +02:00
Sönke Ludwig
7f050af455
Merge pull request #21 from wilzbach/trailing-whitespace
...
Remove all trailing whitespace + add check
2017-07-19 09:20:19 +02:00
Sönke Ludwig
fb1518a7d6
remove more white space
2017-07-19 00:40:24 +02:00
Sönke Ludwig
bfc6b89ca4
Use abort() in case of uncaught Error exceptions.
...
Fixes "dwarfeh(224) fatal error" that are suspected to be related to occasional infinite loops.
2017-07-19 00:11:12 +02:00
Sönke Ludwig
3d1175e821
Fix InterfaceProxy when used with class instances.
2017-07-19 00:10:39 +02:00
Sönke Ludwig
fcf98c2016
Merge branch 'master' into trailing-whitespace
2017-07-19 00:08:33 +02:00
Sönke Ludwig
d7b2173cb3
Implement TCPListener.stopListening and fix the vibe.core.net.1726 test.
...
The test fix follows the fix in the vibe.d repository: rejectedsoftware/vibe.d#f960427e5974c176c58b516647895a2af4ea181b
2017-07-18 11:55:39 +02:00
Sönke Ludwig
e3492bab06
Update change log and bump version number.
2017-07-16 22:29:45 +02:00
Sönke Ludwig
4f69b1eaf3
Add setTaskCreationCallback() for better remote debugger integration.
2017-07-16 22:07:59 +02:00
Sönke Ludwig
719c62d6c9
Fix TLS initialization condition.
2017-07-16 00:08:07 +02:00
Sönke Ludwig
7efb496208
Fix double-free of ThreadLocalWaiter in ManualEvent.
...
Also adds assertions and a randomized multi-thread test to rule out similar issues with a higher confidence.
2017-07-15 18:16:13 +02:00