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
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
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
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
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
b68d23f515
Add opCast(bool) to FreeListRef and remove opAssign with value type.
2017-10-30 22:58:30 +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
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
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
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
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
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
Sönke Ludwig
254d91dcdf
Improve error message.
2017-07-15 10:12:52 +02:00
Sönke Ludwig
87296bb1e4
Fix compilation error for VibeIdleCollect.
2017-07-10 19:46:16 +02:00
Sönke Ludwig
ca2f9dbe91
Add UDP multicast declarations matching rejectedsoftware/vibe.d#1806 .
...
The actual functionality still needs to be implemented in eventcore.
2017-07-08 10:44:42 +02:00
Sönke Ludwig
429d5dcb77
Fix GenericPath.parentPath.
2017-07-07 22:29:12 +02:00
Sebastian Wilzbach
8f89733a86
Remove all trailing whitespace
...
sed 's/[ \t]*$//' -i **/*.d
2017-07-03 12:19:27 +02:00
Sebastian Wilzbach
04b3575c14
Remove deprecated stdc import
2017-07-03 00:39:41 +02:00
Sönke Ludwig
01ed0a43de
Adjust for eventcore 0.8.12.
2017-06-27 01:11:50 +02:00
Sönke Ludwig
f123e55fa9
Fix assertion condition.
2017-06-22 16:22:11 +02:00
Sönke Ludwig
ed9efd9f44
Merge pull request #10 from wilzbach/allow-removal-of-the-default-logger
...
Allow removal of the default logger
2017-06-22 10:25:20 +02:00
Sönke Ludwig
fd93ab82f5
Remove deprecation attribute for the system overload of setTimer.
...
The approach for now is to keep overloads that receive system delegates and are also marked system in turn. This breaks safety promises in some places within the library, but is an acceptable first step that keeps other possible directions open.
2017-06-22 09:38:56 +02:00
Sönke Ludwig
f40da06385
Update version number.
2017-06-22 09:36:49 +02:00
Sönke Ludwig
07e077a009
Redesign the Path type to statically encode the path format.
...
The previous design, while intended as an improvement over the one-size-fits all Path struct of vibe-d:core, turned out to produce lots of bugs during the transition, because of missing Path.type checks.
The new design uses a cleaner approach, where the static type of a path value encodes the path format. An explicit cast is necessary to convert between different path types. The internet path type also performs proper validation and percent encoding, so that InetPath.toString() always produces a valid URI path.
2017-06-21 14:04:24 +02:00
Sönke Ludwig
7d7e4709c1
Fix nothrow overloads of lock().
2017-06-15 13:45:14 +02:00
Sönke Ludwig
0d164708ec
Fix Windows->inet/Posix path conversion issue.
2017-06-15 10:04:55 +02:00
Sönke Ludwig
5c156d1e90
Clarify async() semantics.
2017-06-12 17:34:09 +02:00
Sönke Ludwig
62e3add3ab
Fix a number of issues related to mixing different path types.
2017-06-12 17:33:25 +02:00
Sönke Ludwig
6f7c897f91
Fix getFileInfo name return value for paths that end with a slash.
2017-06-12 17:31:52 +02:00
Sönke Ludwig
bc689489a8
Add yieldLock(), which enables enforcing no task switches within a scope.
...
runTask() was altered to delay the task switch in case it gets called within an active yieldLock(), so that running tasks is still possible.
2017-06-11 11:40:25 +02:00
Sönke Ludwig
698824e811
Partially implement FileDescriptorStream.
...
Currently only works for waiting on read-readiness (eventcore is not exposing an analog function for write-readiness).
2017-05-30 11:02:22 +02:00
Sönke Ludwig
99a5b882d8
Limit the number of recycled fibers.
...
This allows the process to free up memory after heavy load spikes, while not impacting performance negatively.
2017-05-30 11:00:37 +02:00
Sönke Ludwig
0aed5664ef
Let openFile throw on failure instead of returning an invalid stream.
2017-05-30 10:57:31 +02:00
Dentcho Bankov
aef2936abd
Fix for #11 . Cross port of fix for #1742 from vibe.d
2017-04-15 00:04:08 +03:00
Sönke Ludwig
e3c680b0ce
Add assertion to ManualEvent to check for failure of creating event handles.
2017-03-27 16:32:24 +02:00
Sönke Ludwig
0895cd1960
Avoid bogus assertion failure.
...
Since the task queue entries never got cleaned up, the assertion got triggered once already used queue slots were starting to get reused.
2017-03-27 16:31:52 +02:00
Sönke Ludwig
e81589fa3e
(Re)implement JSON configuration support for readOption.
...
Since the core->data dependency was removed, this had to be commented out. It is now implemented in terms of std.json.
2017-03-25 14:16:22 +01:00
Sönke Ludwig
e769a9b1ca
Avoid lazy evaluation of log arguments while the loggers are locked. Fixes rejectedsoftware/vibe.d#1717 .
...
The deadlock happened because a function that waits for a worker task to finish was passed to the log functions. Evaluated lazily, it got called while the logger's mutex was locked, meaning that any log call from within that thread would cause a deadlock.
This change also has another, possibly important, implication - arguments are evaluated only once instead of possibly multiple times if multiple loggers are registered. This could very well make a lot of existing (wrong) code more robust (e.g. logInfo("%s", i++)).
2017-03-23 17:55:51 +01:00
Sebastian Wilzbach
c80a15321e
Allow removal of the default logger
2017-03-22 13:45:32 +01:00
Sönke Ludwig
e3f9d07e58
Don't store local/remote address for UDP connections.
...
Errored out due to the space requirements of UNIX addresses.
2017-03-10 23:00:43 +01:00
Sönke Ludwig
5fd9fc4007
Always compute TCPConnection.xxxAddress on demand.
...
Storing the network addresses becomes too expensive with UNIX socket support.
2017-03-10 21:06:18 +01:00
Sönke Ludwig
ed8b33786b
Compile fixes.
2017-03-10 20:07:04 +01:00
Sönke Ludwig
1edfc88e63
Add UNIX address type support to NetworkAddress.
2017-03-10 19:53:40 +01:00
Sönke Ludwig
77eddebe45
Improve Path compatibility with the original implementation.
2017-03-10 19:53:07 +01:00
Sönke Ludwig
1d9e88f27a
Fix createTempFile on Windows.
2017-03-09 16:09:46 +01:00
Sönke Ludwig
de718c4b1c
Add runTask overloads to make lambda argument inference work.
2017-02-23 16:39:42 +01:00
Sönke Ludwig
897c43051f
Fix nothrow inference for runTask.
2017-02-23 15:49:59 +01:00
Sönke Ludwig
b995bdaa72
Use thread wait primitives for worker thread shutdown.
...
Avoids possible issues due to tasks interleaving the shutdown on the same thread.
2017-02-23 14:43:22 +01:00
Sönke Ludwig
3dbdc90927
Fix shutdown when no worker tasks have been used.
2017-02-22 23:26:16 +01:00
Sönke Ludwig
76882b3bd7
Remove temporary debug log messages.
2017-02-22 19:58:11 +01:00
Sönke Ludwig
9ac908c599
Use a ring buffer for worker tasks and make TaskFuncInfo creation slightly more efficient.
2017-02-22 19:52:22 +01:00
Sönke Ludwig
40713db075
Move worker task logic into a new TaskPool class.
2017-02-22 18:35:51 +01:00
Sönke Ludwig
f9372446b1
Improve the sync module.
...
- Change the API of Monitor to work without a callback
- Add ManualEvent.emitSingle
2017-02-22 17:42:20 +01:00
Sönke Ludwig
6f26766c70
Fix the "threadTime" log format to be consistent with "thread".
2017-02-22 17:36:43 +01:00
Sönke Ludwig
531398e28d
Merge branch 'master' of github.com:vibe-d/vibe-core
2017-02-19 13:52:54 +01:00
Sönke Ludwig
3f83bef219
Fix Path.parentPath and Path.toString for PathType.windows.
2017-02-18 16:00:27 +01:00
Sönke Ludwig
68430a1ea4
Fix file pointer management in FileStream. Fixes rejectedsoftware/vibe.d#1684 .
2017-02-16 23:37:41 +01:00
Sönke Ludwig
db29e4730f
Let uncaught errors in fibers terminate the process.
2017-02-16 11:56:04 +01:00
Sönke Ludwig
93b342bf77
Fix compilation error on Windows.
2017-02-16 10:20:21 +01:00
Sönke Ludwig
b8663f9fbc
Conditionally compile TaskFiber.state.
...
See https://issues.dlang.org/show_bug.cgi?id=17131
2017-02-01 11:05:53 +01:00
Sönke Ludwig
2ed82ca975
Add compatibility overload for ConnectionPool.this.
...
See rejectedsoftware/vibe.d#1664 .
2017-02-01 10:27:08 +01:00
Sönke Ludwig
df4022d83e
Add stream proxy types to allow user code to store generic streams.
2017-01-31 16:48:04 +01:00
Sönke Ludwig
72913575f4
Fix error message.
2017-01-30 22:52:36 +01:00
Sönke Ludwig
d9c373419a
Fixup for the previous timer fix.
2017-01-30 20:12:37 +01:00
Sönke Ludwig
f5c2177c5d
Fix createTimer() when called with a callback.
2017-01-30 19:55:34 +01:00
Sönke Ludwig
c490a354b7
Handle Timer.stop() gracefully for null timers.
2017-01-30 17:34:25 +01:00
Sönke Ludwig
b7e996cd8c
Let TCPConnection.peek() handle closed connections gracefully.
2017-01-30 17:27:43 +01:00
Sönke Ludwig
2dccd43277
Let TCPConnection.waitForData amd leastSize act gracefully on closed connections.
2017-01-30 12:04:21 +01:00
Sönke Ludwig
ac811ba501
Remove buggy NetworkAddress.toUnknownAddress.
...
UnknownAddress is not large enough to hold either IPv6 or UDS addresses.
2017-01-30 11:40:11 +01:00
Sönke Ludwig
d2629ef053
Don't throw on read error in TCPConnection.waitForData.
2017-01-30 11:29:01 +01:00
Sönke Ludwig
4c9b6c0fb8
Properly check return value of createDatagramSocket.
2017-01-30 11:19:51 +01:00
Sönke Ludwig
8f6c4dd536
Fix LocalTaskSemaphore.
...
Fixes a potential hang, potential over-use of lock slots and only needs a single LocalManualEvent now instead of one created for each wait.
2017-01-30 10:07:06 +01:00
Sönke Ludwig
76df9212ef
Fix accessibility issue for std.concurrency.send.
2017-01-30 09:43:43 +01:00
Sönke Ludwig
84a21f7e9d
Add compatibility overloads for listenTCP.
2017-01-30 09:19:08 +01:00
Sönke Ludwig
e88d2d1b4b
Fix segfault in DirectoryWatcher.
2017-01-29 22:11:17 +01:00
Sönke Ludwig
d0a55ef374
Add an uninterruptible variant of Task.join.
2017-01-29 20:20:08 +01:00
Sönke Ludwig
96b798200c
Make more network methods nothrow.
...
TCPConection properties and NetworkAddress.to(Address)String have been marked nothrow.
2017-01-29 20:19:38 +01:00
Sönke Ludwig
2ff37202c0
Add compatibility overload for setTimer().
2017-01-29 16:46:21 +01:00
Sönke Ludwig
798f0ef446
Implement support for TCPListenOptions.reusePort.
2017-01-27 22:51:17 +01:00
Sönke Ludwig
b391ebabbe
Add more specific assertion for SpinLock initialization.
2017-01-27 22:50:57 +01:00
Sönke Ludwig
fc96ee9050
Fixes for setTimer and SpinLock.
...
- setTimer now starts a task to call the callback. This keeps the timer referenced and avoids issues if I/O functions are called from within the callback.
- SpinLock is now also initialized in "shared static this", so that applications using "shared static this" for initialization work properly.
2017-01-27 22:50:29 +01:00
Sönke Ludwig
71c83440d3
Remove the deprecated OutputStream.write methods.
...
They will stay deprecated in vibe-d 0.8.0, but vibe-core will be released without them.
2017-01-27 00:10:09 +01:00
Sönke Ludwig
5249c1c4c6
Fix infinite recursion in TCPConnection.(local/remote)Address properties.
2017-01-26 13:58:14 +01:00
Sönke Ludwig
373f82c16b
Deprecate stream based OutputStream.write overloads.
...
Replaced by a global pipe() function that supports non-class streams, too.
2017-01-25 22:42:35 +01:00
Sönke Ludwig
5f980acefd
Upgrade to latest eventcore.
2017-01-25 21:04:13 +01:00
Sönke Ludwig
2acc60934f
Add IOMode parameters to stream read/write methods.
2017-01-19 00:36:32 +01:00
Sönke Ludwig
e80d7244bc
Add PathEntry.validateFilename.
2017-01-19 00:33:52 +01:00
Sönke Ludwig
fb706ea0b6
Properly implement struct Path.
...
The new implementation is @nogc where possible.
2017-01-17 23:50:33 +01:00
Sönke Ludwig
9d4e8086ff
Make the callback type the first argument to Waitable!().
2017-01-16 00:23:37 +01:00
Sönke Ludwig
964d72f3b5
Fix handling of scoped callback parameters in eventcore callbacks.
2017-01-16 00:20:35 +01:00
Sönke Ludwig
f3c84d497e
Fix bind address handling for connectTCP.
2017-01-15 23:17:14 +01:00
Sönke Ludwig
24b940039d
Implement UDPConnection.canBroadcast/localAddress.
2017-01-15 22:19:41 +01:00
Sönke Ludwig
f015662a94
TCPConnection and async improvements.
...
- asyncAwaitAny now takes the callback type, so that parameter storage classes are handled correctly
- Implement TCPConnection.remoteAddress/localAddress
- Implement TCPConnection.tcpNoDelay, keepAlive and readTimeout
- Implement timeout handling for TCPConnection.waitForData
2017-01-15 20:59:36 +01:00
Sönke Ludwig
fdfbb55aa8
Re-implement ManualEvent.
...
This simplifies the logic by separating thread local notifications from cross-thread notifications, as well as replacing lockless operations by a spin lock. The thread local variant of ManualEvent is now also separated into a LocalManualEvent type.
2017-01-13 22:24:18 +01:00
Sönke Ludwig
e28c6950d7
Fix shutdown behavior.
...
- Detection of the main thread contained a race condition
- The exit flag monitor task that is started for each event loop wasn't shut down, so that many could be running if runEventLoop was called multiple times.
2017-01-13 22:11:59 +01:00
Sönke Ludwig
7803fdaa81
Make Task.interrupt nothrow + add diagnostic assertion.
2017-01-13 22:08:12 +01:00
Sönke Ludwig
ece639ee01
Improve assertion/test coverage of ManualEvent.
2017-01-11 17:46:36 +01:00
Sönke Ludwig
35a94412d0
Make FileStream small enough to fit into an InterfaceProxy.
2016-12-26 21:28:36 +01:00
Sönke Ludwig
da2dfa23df
Only emit color escape sequences on a Posix terminal.
2016-12-19 21:22:22 +01:00
Sönke Ludwig
8c0660781d
Thread safety improvements in the task system.
...
Removes some invalid safety annotations and adds a workaround for a starvation issue in Task.join() across threads boundaries. This is still not thread-safe, but now has a safety-net and is documented, so that it doesn't get lost.
2016-12-19 20:24:08 +01:00
Sönke Ludwig
1b2c0f33d1
Fix timeout handling in ManualEvent.
...
The timeout could was re-applied in every loop iteration of the wait routine, possibly causing an infinite loop.
2016-12-19 20:19:58 +01:00
Sönke Ludwig
79656a80df
Fix safety error on Windows.
2016-12-19 16:16:50 +01:00
Sönke Ludwig
a7bfbc1c45
Implement createTempFile on Posix.
2016-12-10 16:01:40 +01:00
Sönke Ludwig
bf2edc7fb2
Fix TaskScheduler.waitAndProcess to not block if any tasks were resumed.
...
In situations where no events were involved in an multi-task scenario, the old behavior could lead to the process to starve or hang until an event arrived.
2016-12-10 14:13:44 +01:00
Sönke Ludwig
942089a91c
Add unit tests for joinding tasks from outside of another task.
2016-11-29 19:17:14 +01:00
Sönke Ludwig
ccbd6a063f
Fix FreeListRef related issues.
2016-11-10 12:01:35 +01:00
Sönke Ludwig
f74c30a9f3
Use std.experimental.allocator and remove the custom allocator module.
2016-11-08 15:32:25 +01:00
Sönke Ludwig
4b4e1575dc
Extend the Path interface somewhat.
2016-11-08 14:48:18 +01:00
Sönke Ludwig
0c3c31b969
Annotate more of Task/TaskLocal as safe.
2016-11-04 21:33:01 +01:00
Sönke Ludwig
d5e19e1db6
Disable failing unit tests until Path is properly implemented.
2016-11-02 21:02:36 +01:00
Sönke Ludwig
5e89ac4e91
Safe-ify sync module.
2016-11-02 21:01:09 +01:00
Sönke Ludwig
c7e1468c87
Extend the Path interface (not yet fully implemented).
2016-11-02 21:00:13 +01:00
Sönke Ludwig
1fad8f5c9d
Improve stream module documentation and avoid default arguments.
2016-11-02 20:59:55 +01:00
Sönke Ludwig
2d37e550bd
Safe-ify net module, and extend functionality.
...
- Custom bind address for outgoing stream connections
- reusePort flag
- Full OutputStream interface for TCPConnection.
2016-11-02 20:58:00 +01:00
Sönke Ludwig
831ef743f2
Safe-ify the file module.
2016-11-02 20:54:43 +01:00
Sönke Ludwig
6094971947
Fix unit test.
2016-11-02 20:52:59 +01:00
Sönke Ludwig
2071f30a1c
Remove public HTML escaping declarations from log module.
2016-11-02 20:24:41 +01:00
Sönke Ludwig
d06ad74ee3
Fix and safe-ify ConnectionPool.
2016-11-02 20:23:57 +01:00
Sönke Ludwig
0ee42c4243
Add vibe.d 0.7.x compatible stream definitions.
...
In contrast to 0.7.x, streams can now be either of class, struct or interface type.
2016-10-26 13:11:28 +02:00
Sönke Ludwig
568ccb7127
Implement DirectoryWatcher.
2016-10-25 08:57:16 +02:00
Sönke Ludwig
12daa5c575
Add Path concatenation operators.
2016-10-25 08:56:05 +02:00
Sönke Ludwig
1eb06c4b1a
Mark ManualEvent's interface as safe.
2016-10-25 08:55:48 +02:00
Sönke Ludwig
4db9b3f100
Implement DNS lookups and partially implement UDP.
2016-10-25 00:27:51 +02:00
Sönke Ludwig
c08f101549
Update for eventcore 0.5.0 and the latest DMD beta.
2016-10-24 08:22:49 +02:00
Sönke Ludwig
5bbf07beb8
Fix FileStream.close and let the file test clean up after itself.
2016-10-06 22:15:25 +02:00
Sönke Ludwig
cf75d968d5
Base FileStream on eventcore.
2016-10-06 22:06:51 +02:00
Sönke Ludwig
1337715b2d
Remove unused code.
2016-10-06 22:05:07 +02:00
Sönke Ludwig
e294d24a4b
Update for latest eventcore version.
2016-10-05 14:40:29 +02:00
Sönke Ludwig
914e9ad894
Change debug version "VibeMutexPrint" -> "VibeMutexLog".
2016-10-04 17:53:40 +02:00
Sönke Ludwig
6a1f2ddee3
Make std.concurrency parallelism primitive configurable.
...
Backport from mainline vibe.d.
2016-10-04 17:53:20 +02:00
Sönke Ludwig
930ba5c3de
Fix safety annotation issues.
2016-10-04 17:51:49 +02:00
Sönke Ludwig
19f796af9f
Add vibe.core.runApplication. See rejectedsoftware/vibe.d#1417 .
2016-08-30 12:30:49 +02:00
Sönke Ludwig
4c6f26bd00
Add a minimalistic duck typing based stream representation.
2016-06-18 10:00:02 +02:00
Sönke Ludwig
6bf63c7331
Add optional terminal color support and make the task/thread prefix more concise.
2016-06-17 22:34:50 +02:00
Sönke Ludwig
1005f5c674
Fix all ManualEvent related tests.
2016-06-17 22:33:04 +02:00
Sönke Ludwig
f9579a5dd2
Various task scheduling fixes.
...
- the initial task yield() now is done in an uninterruptible way
- switchToTask now handles switching to an already scheduled task gracefully
- TaskScheduler.hibernate() now properly blocks when called form outside of a task
- added yieldUninterruptible()
2016-06-16 10:58:12 +02:00
Sönke Ludwig
ed36531bd2
Add runEventLoopOnce() and fix hibernate() to block outside of a task.
2016-06-16 10:44:55 +02:00
Sönke Ludwig
e8ba981263
Draft proper shared semantics for ManualEvent.
2016-06-15 18:21:33 +02:00
Sönke Ludwig
8264070f19
Fix for latest eventcore changes.
2016-06-14 09:25:28 +02:00
Sönke Ludwig
3b0e4e0452
Big refactoring step.
...
- Moves a lot of stuff from vibe.core.core to vibe.core.task
- Introduces TaskScheduler to unify the scheduling process
- Refines how tasks are scheduled and processed (can push to the front of the task queue and uses a marker task to keep track of the spot up to which to process)
- Start to add proper support for task interrupts and timeouts by properly cancelling in-flight async operations
- Work on ManualEvent - still not functional for the shared case
- Implement proper IP address parsing in NetworkAddress
2016-06-14 08:01:03 +02:00
Sönke Ludwig
c3857d1bc9
Fix compile errors.
2016-04-10 17:17:30 +02:00
Sönke Ludwig
ba48a6f43a
Use BatchBuffer instead of FixedRingBuffer for TCP read.
2016-04-10 17:17:15 +02:00
Sönke Ludwig
77dc93baa7
Add a function to disable vibe.d's default signal handlers. Fixes #1333 .
...
(cherry picked from commit 29fab2e10bb864a8aee694d4a9de8f26fab2363e)
2016-04-10 14:40:40 +02:00
Sönke Ludwig
508669b781
Fix compile error when calling async() an unshared delegate.
...
(cherry picked from commit a8faddf64170e5d1347b67e1d48b7796bbe08fd9)
2016-04-10 14:40:40 +02:00
Sönke Ludwig
21619e8a30
Add allocation-less overloads of NetworkAddress.to(Address)String.
...
(cherry picked from commit 997d78ad36bfee853daefe663e3a54314a652b19)
2016-04-10 14:40:39 +02:00
Sönke Ludwig
76626f2fd4
Add support for FreeBSD and NetBSD
...
(cherry picked from commit 546fe60d327886265d3d14b447123010621013f6)
2016-04-10 14:40:39 +02:00
Sönke Ludwig
8f4222916f
Weaken the task double-resumption assertion condition.
...
This assertion got triggered in a number of harmless situations and it's not always easy to avoid. Trying to avoid it, it has already caused a rather bad task starvation bug (#1441 ), so at this point it seems to be better to get rid of it.
See also #1407
(cherry picked from commit 621e34b388848c762a7525149ea449ad082996a1)
2016-04-10 14:40:39 +02:00
Sönke Ludwig
3a6583b375
Explictly avoid double-resumption of tasks during Libevent2TCPConnection.close().
...
The previous fix for #1376 resulted in a possible task starvation when the peer reset the connection before the outbound buffer was drained. The new approach now always resumes the waiting task exactly once, no matter how many events happen and no matter in which order.
(cherry picked from commit 350130a2b05cfbf12764ffaa6a86403eacf172d9)
2016-04-10 14:40:38 +02:00
Martin Nowak
dc9002de0e
make splitting of log lines configurable
...
- it might make sense to have newlines in a log message
(e.g. when printing a backtrace) and they shouldn't
be split into multiple log messages, e.g. when using syslog
- the splitting was fixed to work with more than one LF
(cherry picked from commit d14ce3dea1b98227dcd116acc6b175c56d9a1fb0)
2016-04-10 14:40:38 +02:00
Sönke Ludwig
7e2d1dd038
Initial commit.
...
The library is able to support simple TCP servers in the current state. The API is still mostly compatible with mainline vibe.d, but the driver systen has been replaced by the eventcore library and sockets/files/timers/... are now structs with automatic reference counting instead of GC collected classes. The stream interfaces have been removed for now.
2016-03-01 20:30:42 +01:00