Commit graph

476 commits

Author SHA1 Message Date
Sönke Ludwig
881e3da5f9 Make async marked safe if possible and add asyncWork.
asyncWork is the same as async, except that it guarantees that the computation happens in a worker thread.
2019-08-21 13:34:00 +02:00
Sönke Ludwig
4f5636dadf Mark async/Future and runWorkerTaskH as safe. 2019-08-21 13:34:00 +02:00
Tomáš Chaloupka
4e8302d10d unlock ConnectionPool on failure 2019-07-31 14:41:26 +02:00
v1ne
513bebcb95 FileStream: Approximate the file offset better when appending
Instead of starting at zero, start at the current file size. This offset
is stored in FileStream. It is only an approximation because concurrent
writes could advance the file without FileStream's knowledge.

Add a test that shows that the offset is approximated as expected and that
appending to an existing file works, too.

This is also a regression test which shows that appending to an existing
file works as expected. See vibe-d/eventcore#115.
2019-07-26 00:38:15 +02:00
v1ne
ce9faec1c1 FileStream: Forbid seek(.) or truncate(.) when appending to a file
Those functions do not work for files opened for appending. Make this clear.
2019-07-26 00:29:59 +02:00
v1ne
3ebb065509 Clean up: Use "enforce" 2019-07-26 00:29:59 +02:00
Sönke Ludwig
e5f45718f6 Bump version number. 2019-06-21 21:44:27 +02:00
Sönke Ludwig
04d01b0f31 Handle terminated eventcore drivers gracefully when releasing handles.
Instead of crashing, this now prints a warning message. See #135.
2019-06-20 11:56:22 +02:00
Leonid Kramer
c39fdb2208
Merge pull request #163 from vibe-d/issue157-empty-consumeOne-on-closed-channel
Fix empty-consumeOne channel usage pattern for a single consumer
2019-06-20 09:31:13 +02:00
Sönke Ludwig
37ad77c701 Let empty block to make sure the following consumeOne succeeds.
This change ensures that a return value of false guarantees the next call to consumeOne to succeed, meaning that the combination of empty/consumeOne is sound in a single-consumer scenario. This also updates the documentation to stress that tryConsumeOne is still the preferred API.
2019-06-16 23:00:05 +02:00
Sönke Ludwig
8c63f79ea7 Avoid yielding in the task finalization phase. Fixes #161.
Makes sure that the task finalization finishes (including notifying possibly multiple joiners) before the fiber yields, because it won't be resumed by the scheduler before the next task gets assigned to the fiber.
2019-06-16 22:44:11 +02:00
Sönke Ludwig
79bb21c6a3 Bump version number. 2019-06-16 15:10:50 +02:00
Sönke Ludwig
989577ff23 Fix copyFile setting file times of write protected files. 2019-06-16 15:10:50 +02:00
Sönke Ludwig
0d78dfe4a9 Let TCPConnection.leastSize time out according to the readTimeout property.
Fixes #153.
2019-06-16 09:55:00 +02:00
Sönke Ludwig
5393109669 Add TCPConnection.waitForDataEx.
Allows to distinguish between timeout and no more data cases.
2019-06-04 15:20:54 +02:00
Sönke Ludwig
33014fde5f
Merge pull request #154 from BenjaminSchaaf/process
Implement vibe.core.process for subprocess handling similar to std.process
2019-06-04 11:18:34 +02:00
Benjamin Schaaf
68dd4baa44 s/registerProcess/adoptProcessID/g 2019-06-04 10:13:00 +10:00
Benjamin Schaaf
0d4840b81d Address review comments 2019-06-02 14:42:41 +10:00
Geod24
40f82b22e5 Remove useless imports to std.variant 2019-05-28 14:24:42 +09:00
Sönke Ludwig
08db20629b Implement logException.
Logs an exception along with an error message and the full stack trace. Performs proper exception handling for the latter to stay nothrow.
2019-05-25 22:12:43 +02:00
Sönke Ludwig
c3832cbb8b Bump version number. 2019-05-19 11:51:16 +02:00
Benjamin Schaaf
83e2d391e6 2nd candidate windows compilation fix 2019-05-05 17:52:44 +10:00
Benjamin Schaaf
7f11fcf7a6 Candidate windows compilation fix 2019-05-05 15:37:35 +10:00
Benjamin Schaaf
c3f5ebb9fd Implement vibe.core.process for subprocess handling similar to std.process 2019-05-05 15:27:57 +10:00
Sönke Ludwig
b86610011f
Merge pull request #150 from rracariu/patch-1
Add way to disable port and address reuse
2019-04-26 09:56:04 +02:00
Denis Feklushkin
fc9bef86af Logger: avoid formatting for strings without additional args 2019-04-23 23:01:44 +07:00
Radu Racariu
5e8e75e3e8 Add way to disable port and address reuse 2019-04-17 16:40:04 +03:00
Sönke Ludwig
f734b4a142 Improve thread-correctness of Task/TaskFiber.
- Task.join and Task.interrupt are now thread-safe
- TaskFiber.task returns Task.init if no task is running (avoids bogus resumes of the TaskFiber by the scheduler)

To enable thread-safe join/interrupt, the task counter is now stored together with the necessary flags within a single shared ulong that is manipulated atomically.
2019-04-13 20:53:01 +02:00
Sönke Ludwig
a202d33b3e Fix a (harmless) race-condition.
ThreadLocalWaiter.unused may only be accessed from the owner thread.
2019-04-13 17:01:50 +02:00
Sönke Ludwig
1ca950867a Fix typo. 2019-04-05 09:47:37 +02:00
Sönke Ludwig
a86f25b3b4 Fix range violation in makeFileInfo and add some unit tests. 2019-04-05 09:47:32 +02:00
Sönke Ludwig
bf30127534 Add ConnectionPool.removeUnused.
Allows to disconnect all connections that are not currently in use. In particular, it allows to close all connections at shutdown to avoid leaking socket descriptors.
2019-03-28 14:11:20 +01:00
Sönke Ludwig
e03caac035 Bump version number. 2019-03-26 15:37:30 +01:00
Sönke Ludwig
8e4adf000f Make the DirEntry->FileInfo conversion nothrow.
Avoids listDirectory/iterateDirectory getting interrupted when stumbling over inaccessible files. The `name` field of the returned file info value is always set, so that these files can still be identified.
2019-03-25 09:45:47 +01:00
The Dlang Bot
5b146ab002
Merge pull request #141 from FraMecca/master
support isFile
merged-on-behalf-of: Sönke Ludwig <s-ludwig@users.noreply.github.com>
2019-03-21 20:22:21 +01:00
Francesco Mecca
6292320bb2 support isFile 2019-03-21 17:39:44 +01:00
Sönke Ludwig
caf291dd22 Bump version number. 2019-03-10 16:00:30 +01:00
Sönke Ludwig
02f5b4f91d Avoid superfluous notifyAll calls in Channel.
Slightly reduces the notification overhead in multiple-reader or multiple-writer scenarios.
2019-03-10 16:00:12 +01:00
Leonid Kramer
f558ce6c3f
Merge pull request #139 from vibe-d/busy_loop_interleave
Fix proper interleaving of busy yield loops inside and outside of tasks.
2019-03-09 21:41:47 +01:00
Sönke Ludwig
cae9f28885 Fix proper interleaving of busy yield loops inside and outside of tasks. 2019-03-06 12:35:37 +01:00
Steven Dwy
111478ef41 Fix #109 - TCPConnectionFunction is actually a delegate 2019-02-24 02:55:47 -08:00
Joseph Rushton Wakeling
d8e4013c92
Fix runApplication handling of unrecognized command-line args
`runApplication` takes an `args_out` parameter which, if non-null, is
supposed to be set to match unrecognized command-line args.  However,
the parameter is never passed to `finalizeCommandLineOptions`, which
will therefore log an error and throw an exception if any command line
arguments are unrecognized.

This patch fixes the oversight, ensuring that `runApplication` will
correctly populate a non-null `args_out` parameter with unrecognized
command-line arguments, and not throw an exception in this case.
2019-02-22 16:33:01 +01:00
Sönke Ludwig
bfcf08def0 Bump version number. 2019-01-26 19:28:43 +01:00
Sönke Ludwig
92bb067f4b Make Channel.tryConsumeOne/consumeAll/close/empty/bufferFill nothrow. 2019-01-26 18:29:28 +01:00
Sönke Ludwig
1a463cafc9 Make TaskCondition.wait/notify/notifyAll nothrow. 2019-01-26 18:04:50 +01:00
Sönke Ludwig
c6a29e1c3b Make createChannel safe and add Channel.bufferFill. 2019-01-26 18:04:50 +01:00
Sönke Ludwig
5437b9ecb6
Merge pull request #129 from vibe-d/run_worker_task_h
Implement runWorkerTaskDistH.
2019-01-26 18:04:22 +01:00
Sönke Ludwig
a54fa6b7de Implement runWorkerTaskDistH.
Variant of runWorkerTask that allows to get the handles of the created tasks.
2019-01-26 18:02:47 +01:00
Sönke Ludwig
177e761716
Merge pull request #128 from WebFreak001/fix-net-regression
remove refsLeft assert
2019-01-23 21:22:55 +01:00
WebFreak001
611505c038 remove refsLeft assert
It seems when running in a vibe-d app that the assert fails
Even though I would like there to be a check, closing the vibe.d
app afterwards shows no leaked handles so I think it's fine.
2019-01-22 20:16:38 +01:00