Eugene Kabanov
80102a3b6a
Eventbus implementation ( #214 )
...
* Initial commit.
* Move AsyncEventBus implementation to asyncsync.nim
Add subscriptAll(), waitAllEvents() primitives.
Add emitWait() primitive.
Add emitter source location implementation.
Add tests.
2021-09-15 16:55:15 +03:00
Eugene Kabanov
bbbcb55493
Server-side events implementation. ( #222 )
...
Fix keep-alive issue.
Refactor some prepareXXX routines.
2021-09-14 20:32:58 +03:00
Eugene Kabanov
5034f0a5a6
Fix issue #219 ( #220 )
...
* Address issue #219 and add tests for it.
Some cosmetic refactoring.
* Fix *nix tests.
2021-09-05 00:53:27 +03:00
Eugene Kabanov
05c91418be
Export async-related imports to allow partial imports. ( #218 )
2021-08-26 14:22:29 +03:00
Eugene Kabanov
9d80c7068f
Server must not send `Host` header. ( #215 )
2021-08-15 04:29:48 +03:00
Eugene Kabanov
b14f66c295
No more Defect on stream close. ( #213 )
...
Fix async streams issue with replacing state.
Add `closing` states to HTTP's server connection, request and bodyrw.
Fix Http server cancellation leaks.
2021-08-06 13:13:55 +03:00
Eugene Kabanov
ef2430d08d
Add `Accept` header handling to httpserver.nim. ( #211 )
...
* Add `Accept` header handling to httpserver.nim.
Add simple test suite.
Bump version to 3.0.6.
* Fix compilation error.
2021-07-28 17:08:38 +03:00
Johann Bauer
3a9cc6bfc9
Update `toIPv4` and `toIPv6` to keep the port ( #209 )
...
Currently, converting a `TransportAddress` from IPv4 to IPv6 or vice-versa will set the port to 0.
2021-07-27 14:39:48 +03:00
Eugene Kabanov
14ebf269e9
Fix accept defect ( #206 )
...
* Fix accept() FutureDefect on cancellation.
* Do not close pipe twice.
* Check for retFuture state before changing it state.
2021-06-30 18:22:37 +03:00
Eugene Kabanov
15137f71c3
Basic authorization implementation for HTTP client. ( #204 )
...
* Basic authorization implementation for HTTP client.
Add tests for basic authorization.
* Bump chronos version to 3.0.5.
2021-06-29 02:38:08 +03:00
Eugene Kabanov
f7dd6b76c2
Safely close connection's streams. ( #199 )
2021-06-14 15:16:33 +03:00
Eugene Kabanov
e6fd38fd49
Add one more state `Closing` to help avoid race condition while in `closeWait` of request, response, connection. ( #198 )
2021-06-10 13:58:41 +03:00
Eugene Kabanov
7ccb170f7a
Enable comma as array delimiter and adding tests. ( #191 )
...
* Enable comma as array delimiter and adding tests.
* Bump version to 3.0.4.
2021-05-17 22:39:24 +03:00
cheatfate
67f0f1224f
Bump nimble version.
...
Make some useful fields public.
2021-05-10 10:40:56 +03:00
Eugene Kabanov
be184a815c
Httpclient ( #182 )
...
* Initial commit.
* Some refactoring.
* Allow boundstream to accept uint64.
Fix httpserver and asyncstream tests to follow new uint64 requirement.
* send() and getBodyBytes() implementations.
* Add closeWait for response and request.
Refactor finish/close flow.
* Changes in state machine
Add first test.
* Missing test file.
* Fixed tests
Add http leaking trackers and tests.
* Some fixes in multipart.
Fix automatic Content-Length header for requests with body.
Fix getBodyBytes() assertions.
Merging tests to main suite.
* Post rebase fixes.
* Fix tests big message generation.
* Fix response state management and leaks for getBodyXXX() procedures.
* Add redirection support to client and server.
Add fetch(url) procedure with redirection support.
Add tests for redirection.
2021-05-10 10:26:36 +03:00
Eugene Kabanov
d270dba8a3
Fix unused warnings, result, asyncCheck and 80 cpl ( #185 )
...
* Fix sources to follow 80 characters per line.
Fix unused compilation warnings.
Refactor (remove result) handles.nim.
Fix tests to use asyncSpawn instead of asyncCheck.
* Fix handles for Unix platforms.
2021-05-07 23:52:24 +03:00
Eugene Kabanov
fed6b0ac92
Restore functionality of zero-sized bounded reader/writer streams. ( #184 )
...
* Restore functionality of zero-sized bounded reader/writer streams.
Adding tests for it.
* run build_nim.sh unconditionally
Co-authored-by: Ștefan Talpalaru <stefantalpalaru@yahoo.com>
2021-05-07 18:52:44 +03:00
Ștefan Talpalaru
c15c985c1f
support nimStackTraceOverride ( #181 )
2021-05-06 09:49:55 +02:00
Jacek Sieka
43b8aada20
Add message to task failure message ( #183 )
2021-05-06 09:46:58 +02:00
cheatfate
645d62db78
Remove fastpath execution and finally fix issue.
2021-04-27 00:07:49 +03:00
Eugene Kabanov
39f4060e07
Refactor and optimization of BoundedStream. ( #180 )
...
Documentation for BoundedStream.
Fix HttpServer bounding.
2021-04-26 14:05:37 +03:00
Eugene Kabanov
833d968782
Fix upload() issue and adding tests. ( #179 )
2021-04-24 20:32:21 +03:00
Eugene Kabanov
e6ba00cb81
Fix reading could stuck on very big chunked headers and tests. ( #178 )
2021-04-22 15:32:28 +03:00
Eugene Kabanov
aab1e30a72
Refactor common.nim and add more resolve procedures. ( #177 )
...
* Refactor common.nim to remove `result` usage.
Fix comparison of TransportAddress issue.
Add resolveTAddress procedures for both IPv4 and IPv6 addresses.
Fix tests.
* Bump version to 3.0.2.
2021-04-10 00:39:54 +03:00
Jacek Sieka
895fc53193
add explicit gcsafe annotations ( fixes #174 ) ( #175 )
...
Seems like a variation of https://github.com/nim-lang/Nim/issues/17369
2021-04-03 10:05:08 +02:00
markspanbroek
e5d3ecdd01
Ensures that asyncmacro2 does not raise exceptions ( #172 )
...
* Ensures that asyncmacro2 does not raise exceptions
* Remove unnecessary include
2021-03-30 16:48:20 +02:00
Jacek Sieka
075b7abf4c
fix Defect check in non-strict mode ( #170 )
2021-03-25 15:53:33 +01:00
Kim De Mey
c206d2bc19
Add raises annotation to withTimeout callbacks ( #168 )
2021-03-25 14:20:26 +01:00
Jacek Sieka
4abd7a5645
exception tracking ( #166 )
...
* exception tracking
This PR adds minimal exception tracking to chronos, moving the goalpost
one step further.
In particular, it becomes invalid to raise exceptions from `callSoon`
callbacks: this is critical for writing correct error handling because
there's no reasonable way that a user of chronos can possibly _reason_
about exceptions coming out of there: the event loop will be in an
indeterminite state when the loop is executing an _random_ callback.
As expected, there are several issues in the error handling of chronos:
in particular, it will end up in an inconsistent internal state whenever
the selector loop operations fail, because the internal state update
functions are not written in an exception-safe way. This PR turns this
into a Defect, which probably is not the optimal way of handling things
- expect more work to be done here.
Some API have no way of reporting back errors to callers - for example,
when something fails in the accept loop, there's not much it can do, and
no way to report it back to the user of the API - this has been fixed
with the new accept flow - the old one should be deprecated.
Finally, there is information loss in the API: in composite operations
like `poll` and `waitFor` there's no way to differentiate internal
errors from user-level errors originating from callbacks.
* store `CatchableError` in future
* annotate proc's with correct raises information
* `selectors2` to avoid non-CatchableError IOSelectorsException
* `$` should never raise
* remove unnecessary gcsafe annotations
* fix exceptions leaking out of timer waits
* fix some imports
* functions must signal raising the union of all exceptions across all
platforms to enable cross-platform code
* switch to unittest2
* add `selectors2` which supercedes the std library version and fixes
several exception handling issues in there
* fixes
* docs, platform-independent eh specifiers for some functions
* add feature flag for strict exception mode
also bump version to 3.0.0 - _most_ existing code should be compatible
with this version of exception handling but some things might need
fixing - callbacks, existing raises specifications etc.
* fix AsyncCheck for non-void T
2021-03-24 10:08:33 +01:00
Eugene Kabanov
c8eefb9382
Split HTTPS and HTTP servers. ( #165 )
...
* Split HTTPS and HTTP servers.
* Fix review commens
2021-03-17 15:40:40 +02:00
Eugene Kabanov
0b78606e41
Add `server` and `host` headers handling. ( #164 )
...
Fix response headers generation to avoid unnecessary computations.
2021-03-11 13:41:13 +02:00
Eugene Kabanov
f774644129
Fix integer decoding overflow issue. ( #163 )
...
Switch to stew.base10 procedures.
Adjust tests to follow new behavior.
Bump version to 2.6.1.
2021-03-06 00:22:32 +02:00
Andreas Rumpf
1324b2f787
Enable --gc:orc testing for nim-chronos ( #161 )
...
* enable --gc:orc testing on nim devel (1.5.x)
2021-03-03 20:04:09 +02:00
Eugene Kabanov
c31e4537fe
Fix contentType handling code. ( #162 )
...
Add more respond() aliases.
Add responded() to check if response is already sent.
2021-03-02 15:26:07 +02:00
cheatfate
72151b99cc
Fix `HttpTable.contains` argument requirements.
2021-02-26 11:31:46 +02:00
Eugene Kabanov
eb6e32605f
Fix #156 and refactor osnet.nim ( #157 )
...
* Refactor osnet.nim to not use `result`.
Fix #156 .
* Fix linux compilation error.
2021-02-25 22:04:56 +01:00
cheatfate
d6a39e46e1
Fix tests.
2021-02-21 17:34:55 +02:00
cheatfate
d595e0dbc6
Send `Content-Length: 0` on error.
...
Handle `DisconnectError`.
2021-02-21 04:22:59 +02:00
cheatfate
60a53eea99
Fix import/export issue of httputils.
...
Add bound address to HttpServer object.
2021-02-20 19:41:22 +02:00
Eugene Kabanov
d49e0a9c47
Add drop() implementation (was missed) to httpserver and fix transport leak. ( #158 )
...
* Add drop() implementation (was missed).
Add tests for drop().
Fix transport leak because of drop().
* Fix future leak.
2021-02-19 14:07:20 +02:00
cheatfate
25688cd0aa
Add hexValue tests.
2021-02-18 22:16:04 +02:00
cheatfate
4e9a857b90
Link to original procedure for hexValue().
2021-02-18 22:16:04 +02:00
cheatfate
1d49ae7a47
Fix x86 int conversion.
2021-02-18 22:16:04 +02:00
cheatfate
eb81018d02
Address review comments and fix issues found.
...
Adding more tests.
2021-02-18 22:16:04 +02:00
cheatfate
fc0d1bcb43
Address review comments.
2021-02-18 22:16:04 +02:00
cheatfate
6f8d06f12d
Add HttpDisconnectError to avoid client processor notification call.
2021-02-18 22:16:04 +02:00
cheatfate
1789328748
Set TLSStream default to use TLS1.2 only.
2021-02-18 22:16:04 +02:00
cheatfate
b47fcb3e86
Annotate with `raises:[Defect]`.
2021-02-18 22:16:04 +02:00
cheatfate
45cb009be2
Remove `bodyTimeout` because downloading body is not under our control.
2021-02-18 22:16:04 +02:00
cheatfate
3495122867
Fix getMultipartBoundary() issues and add tests for it.
2021-02-18 22:16:04 +02:00
cheatfate
3e9ffae407
Properly fix case when request body size exceeds maximum allowed size.
2021-02-18 22:16:04 +02:00
cheatfate
970e5641d7
Add less strict rules for BoundStream reader/writer.
2021-02-18 22:16:04 +02:00
cheatfate
d43a9cb92d
HttpServer now supports TLS.
...
Some TLSStream fixes to properly support EOF.
Some HttpServer to properly support TLS handshake problems.
HttpServer test suite for HTTPS.
2021-02-18 22:16:04 +02:00
cheatfate
1a3e9162a4
Fix multipart end of message handling.
...
Add apps.nim.
Change copyrights dates.
Add httpserver tests to test suite.
2021-02-18 22:16:04 +02:00
cheatfate
fb11d9f8ab
Add httptable changes.
2021-02-18 22:16:04 +02:00
cheatfate
8c20b369b7
Fix queryParams() to not produce empty values.
...
Fix part() cancellation.
Add requestInfo() procedure.
Fix request.scheme.
Add MultiPart.isEmpty()
Fix MultiPart counter.
Add isEmpty() for HttpTable.
Add some documentation in HttpTable.
2021-02-18 22:16:04 +02:00
cheatfate
a310a5620a
General fixes.
2021-02-18 22:16:04 +02:00
cheatfate
0b03f8ec50
Expect header handling and response preparations.
2021-02-18 22:16:04 +02:00
cheatfate
74b0f85fc7
Add async post() procedure.
2021-02-18 22:16:04 +02:00
cheatfate
475c03ff7b
Fix MultiPart handling mechanisms.
2021-02-18 22:16:04 +02:00
cheatfate
c0472bd349
Fix streams to check only for Closed state.
2021-02-18 22:16:04 +02:00
cheatfate
534df03a0b
Fixes and improvements
2021-02-18 22:16:04 +02:00
cheatfate
0e5ea5b737
Prepare for HttpResponse.
2021-02-18 22:16:04 +02:00
cheatfate
60e5396a9e
Remove executable.
2021-02-18 22:16:04 +02:00
cheatfate
8381a40868
Initial commit.
2021-02-18 22:16:04 +02:00
cheatfate
2defc4b822
Add sequence of bytes as boundary to BoundStream and tests.
2021-02-18 22:16:04 +02:00
cheatfate
fb137112be
Remove debugging changes.
2021-02-18 22:16:04 +02:00
cheatfate
13eddf382d
Simplification and fixes for TLSStream state machine.
2021-02-18 22:16:04 +02:00
cheatfate
e8d2a3ca0a
Attempt #5 .
2021-02-18 22:16:04 +02:00
cheatfate
49fd70f504
Attempt #4 .
2021-02-18 22:16:04 +02:00
cheatfate
f1b43aeb04
Investigation of Linux freezes #3 .
2021-02-18 22:16:04 +02:00
cheatfate
cf42a5455e
Investigation of Linux freezes #2 .
2021-02-18 22:16:04 +02:00
cheatfate
ac8b11d6ca
close() procedure should not raise, otherwise its impossible to cleanup.
2021-02-18 22:16:04 +02:00
cheatfate
0cb6840f03
Big refactoring of AsyncStreams.
...
1. Implement all read() primitives using readLoop() like it was done in streams.
2. Fix readLine() bug.
3. Add readMessage() primitive.
4. Fixing exception hierarchy, handling code and simplification of (break/continue + exception).
5. Fix TLSStream closure procedure.
6. Add BoundedStream stream and tests.
7. Remove `result` usage from the code.
2021-02-18 22:16:04 +02:00
Eugene Kabanov
dcf197a8c7
Attempt to fix MacOS compilation issues. ( #152 )
2021-02-02 17:10:07 +02:00
Jacek Sieka
e7f5f855ab
use constant for ip kind ( #151 )
...
IPV6_MULTICAST_HOPS already declared in posix.nim while IP_MULTICAST_TTL
has a value that will stay constant on linux/x86_64 - better codegen and
nlvm compat like this.
2021-02-02 16:12:12 +02:00
Eugene Kabanov
491213dfa0
Add callIdle() primitive. ( #148 )
...
* Add callIdle primitive.
* Make single idle callback to be processed by single poll() step.
Add idleAsync() primitive to allow wait for "idle" time.
Refactor some `result` usage.
2021-01-19 13:48:39 +01:00
Jacek Sieka
9a420c6b05
work around overload resolution issues ( #146 )
...
it seems that due to a naming conflict from asyncdispatch, callSoon is
deduced to raise exceptions even if it doesn't in modules that import
both, even indirectly - this patch randomly works around the issue with
some more overloads
2021-01-11 22:15:21 +01:00
Eugene Kabanov
0933feaa35
Fix callSoon to raise Defect only. ( #145 )
...
* Initial commit.
* Move pragmas to forward declaration.
Add raises to callSoon declaration.
* Fix for IOSelectorsException.
2021-01-11 18:15:23 +01:00
Eugene Kabanov
bca5559c6a
Race() call ( #142 )
...
* Add `race` procedure call which extends `one` with FutureBase.
* Fix race() and add test procedures.
2020-11-27 00:50:55 +02:00
Eugene Kabanov
ac9b3e304f
Fix deadlock for pending write() calls on transport close. ( #139 )
...
Add tests for read() and write() deadlocks.
2020-11-18 11:30:33 +02:00
cheatfate
879c917242
Add cancellation handler for cancelAndWait()
2020-11-17 19:28:52 +02:00
cheatfate
493cb1dbfd
Fix behavior of wait() and withTimeout() calls to cancel and wait for result of cancelled Future[T].
...
Add tests.
2020-11-17 19:28:52 +02:00
Jacek Sieka
7fd1a0f635
rename newFuture proc's ( #136 )
...
...or the compiler randomly gets confused when
`-d:chronosFutureTracking` is enabled
2020-11-15 20:46:42 +02:00
Eugene Kabanov
b5915ecd29
Small fixes ( #134 )
...
* Fix cancellation behavior.
Fix some compilation warnings.
* Fix cancelAndWait() and add proper documentation.
* Add completed(Future) and done(Future) calls to check if Future[T] completed without an error.
* Add stepsAsync() and tests.
* Fix comments.
* Fix new primitive comment, to avoid usage for task switches.
2020-11-13 14:22:58 +02:00
Eugene Kabanov
d3018ae908
Fix TLSStream SSL errors while in handshake could stuck connection. ( #133 )
...
Fix expired SSL certificate in tests.
2020-10-13 02:12:52 +03:00
Jacek Sieka
1ffd1cd3dc
release callback memory early ( #130 )
...
* release callback memory early
this fixes a memory leak where a deleted callback may keep references
alive until the future is finished.
In particular, when using helpers like `or` which try to remove
themselves from the callback list when a dependent future is completed,
create a reference chain between all futures in the expression - in the
pathological case where one of the futures is completes only rarely (for
example a timeout or a cancellation task), the buildup will be
significant.
* Removing unnecessary asserts, and place comments instead.
2020-09-15 10:55:43 +03:00
Eugene Kabanov
2134980744
Fix AsyncLock.locked flag to be consistent. ( #129 )
...
* Fix `locked` flag to be more consistent.
Refactor AsyncLock to not use `result`.
Add test for `locked` flag.
* Fixes.
* Fix imports.
* Fix multiple release() without scheduler.
Add more tests.
* Fix review comments.
2020-09-10 23:28:20 +03:00
Jacek Sieka
483054cda6
small fixes ( #127 )
...
* small fixes
* more efficient codegen for nil check (much less code)
* release futures earlier in AsyncEvent
* release finished future earlier in AsyncQueue
* avoid searches for futures (deque variant unused / broken)
* avoid catching defects
* Fix AsyncEvent test, because of optimization.
* delete fix
* avoid seq allocs
* Keep style consistent with other code.
Refactor AsyncEvent and AsyncQueue to not use `result` keyword.
Co-authored-by: cheatfate <eugene.kabanov@status.im>
2020-09-10 11:39:10 +03:00
Eugene Kabanov
57ebe84d17
Add Defect check for arguments `pbytes` and `nbytes`. ( #128 )
...
* Add Defect check for arguments `pbytes` and `nbytes`.
* Allow some edge cases to be not Defect.
2020-09-10 03:50:06 +03:00
Eugene Kabanov
126ea4bc56
Fix newFuture[T] location source for generated async procedures. ( #125 )
...
Add tests to for locations.
2020-09-03 14:37:53 +03:00
Eugene Kabanov
a5442edfc0
Add asyncSpawn() procedure and tests. ( #123 )
...
Deprecated asyncDiscard() procedure.
Bump version to 2.5.2.
2020-09-01 21:41:18 +03:00
Zahary Karadjov
e6d50b7736
Revert "some metrics for monitoring futures ( #85 )"
...
This reverts commit e45ef32b5b
.
Metrics implemented this way, with a lock inside the otherwise tight
event loop are not consistent with the chronos architecture that for
good or bad uses thread local variables to avoid them - the solution
does not have rough consensus behind it, and other avenues should be
explored for this generally useful functionality.
2020-08-16 01:48:25 +03:00
Zahary Karadjov
826d48c4aa
Revert "more docs ( #111 )"
...
This reverts commit d0a17d551f
.
Moving CancelledError outside of the established Nim hierarchy is
not a solution that has rough consensus and has an unknown impact
on compatibility with otherwise correctly implemented cancellation
code (for example when `CatchableError` is caught, cleanup is done,
then the exception is reraised). Further, this breaks the established
convention in the Nim community that Exception should not be inherited
from, complicating compatibility with future Nim versions that may
enforce this more strongly.
2020-08-16 01:48:25 +03:00
Zahary Karadjov
03f4a26829
Revert "yieldAsync() ( #120 )"
...
This reverts commit 284d677815
.
There is no rough consensus for how this should be implemented and
whether it's needed indeed - a use case that cannot be solved with
a queue or a lock/event should be identified before pursuing this
functionality.
2020-08-16 01:48:25 +03:00
Zahary Karadjov
34b81961d3
Revert "asyncCheck(): don't raise exception on cancellation ( #121 )"
...
This reverts commit baf33f04ea
.
This change hides exceptions that should be handled explicitly -
asyncCheck is a debugging tool that should only be used in
exception-free situations (indeed, to fail when the operation
unexpectedly raises). There is no rough consensus behind this
change.
2020-08-16 01:48:25 +03:00
Ștefan Talpalaru
baf33f04ea
asyncCheck(): don't raise exception on cancellation ( #121 )
2020-08-12 16:24:55 +02:00
Ștefan Talpalaru
284d677815
yieldAsync() ( #120 )
2020-08-10 15:31:21 +02:00
Ștefan Talpalaru
d0a17d551f
more docs ( #111 )
...
* more docs
* make CancelledError and object of Exception
2020-08-06 20:52:50 +02:00
Ștefan Talpalaru
e45ef32b5b
some metrics for monitoring futures ( #85 )
2020-08-06 19:30:53 +02:00
zah
0d4d0002b0
Produce an error when the result variable is used in void async procs ( #117 )
2020-08-05 16:28:11 +03:00
Eugene Kabanov
73de13ca7a
Fix SIGSEGV while consuming errors more then once. ( #114 )
2020-08-05 00:23:43 +03:00
Ștefan Talpalaru
f5634f499d
cancelAndWait(): add comments ( #112 )
...
The cancellation process has a very complicated control flow, split over
different files and hidden by macros. These comments should help shed a
light on this madness.
2020-07-30 02:47:11 +02:00
Eugene Kabanov
31fec25063
Fix accept races. ( #110 )
...
* Fix accept races.
2020-07-15 11:09:34 +03:00
cheatfate
783f84aa4b
Fix EAGAIN issue in acceptLoop().
2020-07-15 01:07:03 +03:00
Ștefan Talpalaru
63041b2d8f
start documenting the library ( #109 )
...
* start documenting the library
* introduce futures
* running the event loop
* async procs and "await"
* more "await" examples
* clarify internal callback creation
* error handling
* address review comments
* remove TODO item
* more about future completion
2020-07-13 17:59:11 +02:00
Jacek Sieka
f856c885fa
fix endian conversion issues ( #82 )
...
* fixes call to `bigEndian32` on a uint64 which breaks on big endian
platforms
* prefer endians2 for less and safer code
2020-07-12 18:22:47 +02:00
Ștefan Talpalaru
0ad7321aa0
ServerFlags.ReusePort support on POSIX ( #95 )
2020-07-12 18:13:22 +02:00
Eugene Kabanov
ce6e7d17b1
Make Future tracking and stack traces optional ( #108 )
...
* Make Future tracking optional via -d:chronosDutureTracking compilation flag.
* Stack traces is now optional, use -d:chronosStackTraces.
* Fix mistypes and add test for chronosStackTrace option.
2020-07-08 19:48:01 +03:00
Eugene Kabanov
5629b3c41f
[WIP] Zero-cost unattended Future[T] tracking mechanism. ( #106 )
...
* Zero-cost unattended Future[T] tracking mechanism with tests and tracking of test suite.
2020-07-06 09:33:13 +03:00
Eugene Kabanov
16ed169f25
Fix cancellation race when low level futures are already completed, while cancellation process is pending. ( #107 )
...
Added test.
2020-07-03 15:03:59 +03:00
Eugene Kabanov
528688d01e
Add sanity check. ( #105 )
2020-06-25 09:32:41 +03:00
Eugene Kabanov
319e2bfc09
Fix Nim's issue #13899 using #14723 and add tests. ( #104 )
2020-06-24 13:03:36 +03:00
Eugene Kabanov
02b8da986b
Add accept() call ( #103 )
...
* Add accept() call and tests.
* Fix rare fd leaks on Windows.
* Fix compilation warnings.
* Add fd leak test.
* Bump version to 2.4.0.
2020-06-24 11:21:52 +03:00
Eugene Kabanov
bedd1ded5e
Properly fix cancellation race and not introduce FD leaks. ( #102 )
2020-06-05 19:11:51 +03:00
Eugene Kabanov
d6d0084333
Fix cancellation race when connect() call is getting cancelled. ( #101 )
2020-06-04 13:07:52 +03:00
Kim De Mey
bce0f878d1
Remove unreachable raise from initTAddress ( #97 )
2020-05-15 14:09:21 +03:00
Jacek Sieka
aff69aaf29
fix closed error type ( #99 )
2020-05-13 22:45:40 +03:00
cheatfate
357baa52a0
Fix documentation for `or`.
2020-04-21 07:33:31 +03:00
Eugene Kabanov
2ecc5500c2
Undeprecate `or` operation. ( #93 )
...
* Undeprecate `or` operation.
Fix `or` for already finished futures.
Add tests.
* Bump version to 2.3.9.
2020-04-21 07:07:49 +03:00
Giovanni Petrantoni
9ea1017a06
Fix possible race condition in asyncstream close ( #91 )
2020-04-09 17:56:56 +03:00
Eugene Kabanov
3d745a4b0c
Fix Nim's issue #13889 https://github.com/nim-lang/Nim/issues/13889 . ( #90 )
2020-04-06 15:49:09 +03:00
Eugene Kabanov
4e2810cfe0
Fix issue with allFinished(), allFutures(), one() behavior when Futures passed are already finished. ( #89 )
...
Added test.
2020-04-06 13:56:24 +03:00
Eugene Kabanov
cbd8e03823
Add allFinished() primitive. ( #87 )
...
* Add allCompleted() primitive.
* Rename it to allFinished().
* Fix allFinished Future's static name.
Use `mitems()` instead of `for`.
2020-04-01 12:10:56 +03:00
andri lim
72b4f14427
fix nim 1.2 compilation issue on linux
2020-03-26 16:46:31 +07:00
Araq
f3827a13d1
prepare nim-chronos for Nim version 1.2
2020-03-23 20:17:29 +02:00
Jacek Sieka
d8f8e3d9fc
readMsg branch by @arnetheduck with some changes. ( #83 )
...
Co-authored-by: Eugene Kabanov <ka@hardcore.kiev.ua>
2020-03-05 10:59:10 +01:00
cheatfate
56fbdff096
Async transformed procedures will not catch Exception anymore.
...
Bump version to 2.3.7.
2020-03-03 13:42:43 +02:00
cheatfate
64583b4269
Fix Windows datagram's AnyAddress issue.
...
Add test for datagram's AnyAddress.
Bump version to 2.3.6.
2020-02-25 23:50:39 +02:00
Zahary Karadjov
a9ed7e4f3f
FutureDefect is a type of Defect
2020-02-18 00:35:03 +02:00
cheatfate
8e70d1be7a
Fix macos warnings.
2020-02-12 23:01:41 +02:00
cheatfate
80351cb928
Fix #73 .
2020-02-12 22:54:05 +02:00
cheatfate
4a2416fe5e
Allow to setup datagram servers with 0 port.
2020-01-28 15:46:57 +02:00
cheatfate
e34857364e
Attempt to fix #64 .
2020-01-28 12:47:38 +02:00
cheatfate
74700fdcab
Fix bug cancellation handlers not called in wait() and withTimeout().
...
Fix double completion bug because of callback race.
Fix deprecation warnings.
Rename some internal procedures.
Bump version to 2.3.5.
2020-01-27 22:32:08 +02:00
Dmitriy Ryajov
1c176c173d
fix: restore `removeCallback`
2020-01-08 19:32:53 -06:00
Dmitriy Ryajov
0d84f273c9
make `clearTimer` inline
2020-01-08 11:23:01 -06:00
Dmitriy Ryajov
96e0206c27
reverting AsyncCallback to object
2020-01-08 11:06:56 -06:00
Dmitriy Ryajov
78953f8fc3
consolidating timers loop
2020-01-08 10:03:34 -06:00
Dmitriy Ryajov
d8dd09a358
don't loop over timers heap
2020-01-07 19:06:27 -06:00
Dmitriy Ryajov
d979770263
clear timers under windown as well
2020-01-07 10:22:38 -06:00
Dmitriy Ryajov
b9c534724c
don't scan timers heap on each remove
2020-01-06 23:26:18 -06:00
Dmitriy Ryajov
546cc36d79
fix: avoid completing future twise
2019-12-24 13:23:45 -06:00
cheatfate
a20c34603e
Revert back some exception changes.
2019-12-02 12:40:41 +02:00
cheatfate
73c130abb4
Remove usage of getCurrentException().
...
Bump version to 2.3.4.
2019-11-28 20:14:19 +02:00
Yuriy Glukhov
4d61345978
Use CatchableError as base instead of Exception
2019-11-22 18:59:02 +02:00
cheatfate
811c5f66ae
More *nix fixes.
2019-10-30 00:40:02 +02:00
cheatfate
fb00b20cfa
Fix all compilation warnings for 1.0.2.
...
Fix all related problems.
2019-10-29 23:19:41 +02:00
cheatfate
5f1391f39f
Fix unused imports.
2019-10-24 16:21:31 +03:00
cheatfate
a7ff20b299
Fix *nix compilation problem.
2019-10-24 16:06:55 +03:00
cheatfate
29d9274e03
Fix some compilation warnings.
2019-10-24 16:01:57 +03:00
cheatfate
5758d07c08
Fix compilation problems in Nim devel.
2019-10-24 15:29:21 +03:00
cheatfate
b59e759e87
Fix #53
2019-10-23 14:13:23 +03:00
Yuriy Glukhov
a291f26c82
Merge pull request #55 from status-im/tlsstream
...
TLS async stream.
2019-10-22 13:32:36 +03:00
cheatfate
368502c10b
Rename harvestItem to copyOut.
2019-10-18 19:24:58 +03:00
cheatfate
9ce7141087
Fix cancel() issue.
...
Fix asyncstream.nim not propagating cancellation.
Fix tlsstream.nim to proper propagate cancellation.
Fix tlsstream.nim stuck on close.
2019-10-17 14:44:14 +03:00
cheatfate
d008fa2087
Fix make serverName mandatory and check for empty serverName.
2019-10-16 09:07:46 +03:00
cheatfate
a92ad6d2d2
Add TLS inbound stream.
...
Fix some review comments.
2019-10-16 09:01:52 +03:00
cheatfate
161c50209e
Remove debugging echos.
2019-10-10 14:53:33 +03:00
cheatfate
fe6fca1e67
Add hexdump.nim.
2019-10-10 13:01:14 +03:00
cheatfate
5c801a5dbc
Add upload() and some debugging.
2019-10-10 12:52:12 +03:00
cheatfate
3b8874a9e8
Fix issue with Windows connect(0.0.0.0).
2019-10-09 15:12:19 +03:00
cheatfate
3f8d529c8e
Attempt to fix state machine issue.
2019-10-09 09:12:54 +03:00
cheatfate
417111093e
Cleanup references on exit.
2019-10-08 20:38:39 +03:00
cheatfate
e19101d287
Add GC reference to reader and writer.
2019-10-08 20:30:43 +03:00
cheatfate
cae1d09690
Removed debugging imports.
2019-10-08 19:02:42 +03:00
cheatfate
c27624cfc0
Add TlsStream with client-only connections.
2019-10-08 18:46:27 +03:00
cheatfate
3c928918a4
Change AsyncStream close procedure from events to cancellation.
2019-10-08 10:28:43 +03:00
cheatfate
b0fe8398e8
Fix behavior which was agreed in #46 .
2019-09-23 20:24:26 +03:00
Eugene Kabanov
b41af14f86
Fix emscripten compilation errors. ( #46 )
...
* Move initAPI to newDispatcher() call.
2019-09-10 13:19:49 -04:00
cheatfate
a039011f5b
Fix clock_gettime() is not available on old MacOS.
2019-09-03 17:30:28 +03:00
cheatfate
7029f8bc1e
Fix behavior for write operations.
2019-08-28 07:57:06 +03:00
Yuriy Glukhov
aacfa59c76
Fixed compilation error for async lambdas
2019-08-19 20:19:26 +03:00
Eugene Kabanov
693f741c8d
Merge pull request #48 from status-im/no-Iter
...
No Iter in stacktraces
2019-08-16 18:14:43 +03:00
Yuriy Glukhov
2346ed3c6c
Fixup error reporting
2019-08-16 15:23:51 +02:00
Bruno Škvorc
bb525ace25
Fix typo in doc string
...
This typo was breaking nim's doc generator.
2019-08-16 12:27:27 +02:00
Yuriy Glukhov
bff83a9c3c
Disallow waitFor in async
2019-08-15 17:41:15 +02:00
Yuriy Glukhov
a30e4fe361
No Iter in stacktraces
2019-08-15 17:26:00 +02:00
Yuriy Glukhov
e3cb0d1a96
Await is a template now
2019-08-15 16:01:26 +02:00
cheatfate
45f15ca6d7
Fix asyncmacro bug which introduces problems after cancellation got supported.
2019-07-19 13:06:32 +03:00
cheatfate
c4a99447bd
Fix AsyncLock race and refactor asyncsync.nim to properly support cancellation.
...
Fix async macro to not transform nested procedures.
2019-07-17 16:12:31 +03:00
cheatfate
03eb8a0157
Add pipe support for StreamTransport.
...
Bump version to 2.2.8.
2019-07-15 12:59:42 +03:00
cheatfate
ec7f2a14a8
Fix compilation warnings in osnet.nim
...
Fix non stable stream tests.
2019-07-12 10:40:18 +03:00
Eugene Kabanov
cd2571e80a
Merge pull request #41 from status-im/cancellation
...
[WIP] Initial cancellation proposal.
2019-07-06 15:44:21 +03:00
cheatfate
8ba4fc9876
Add `awaitne` command which will have `yield` behavior in async cancellation world.
...
Add tests for both `await` and `awaitne`.
2019-07-06 11:16:31 +03:00
cheatfate
45ca9e1184
Deprecate usage of `yield` inside of streams.
2019-07-05 13:19:04 +03:00
cheatfate
fcfb87d2a0
Deprecate oneIndex(), oneValue(), all(), or(), and().
...
Add allFutures() and one().
Fix deprecation in chunkedstream.
Add tests.
2019-07-04 15:04:59 +03:00
cheatfate
247e453b71
Fix hidden close issue in AsyncStream.
2019-07-02 21:26:21 +03:00
cheatfate
13301005a3
Return back ValueError.
2019-06-25 10:50:56 +03:00
cheatfate
15b25140b4
Let complete/fail cancelled Future[T]/FutureVar[T] for free.
2019-06-25 10:18:47 +03:00
cheatfate
7d7753b7fd
Initial cancellation proposal.
2019-06-20 23:30:41 +03:00
cheatfate
31f4dc3096
Add ability to create copies of AsyncStreams.
2019-06-18 20:11:13 +03:00
cheatfate
5d4338d294
Fix chunkedstream documentation.
...
Remove unnecessary asserts.
2019-06-12 18:26:20 +03:00
cheatfate
f83d1b4da4
Remove some unused symbols.
2019-06-08 08:37:58 +03:00
cheatfate
a8a1138b8b
Fix for race condition in *nix connect().
2019-06-06 21:22:17 +03:00
Eugene Kabanov
9160dcdbba
Merge pull request #37 from status-im/asyncstream
...
Asynchronous streams.
2019-06-06 15:05:08 +03:00
cheatfate
77b4ff0534
Remove timeout handling for streams.
2019-06-06 14:00:47 +03:00
cheatfate
c27c564d47
Add oneIndex(), oneValue() which are varargs `or` operation.
...
Fix some deprecation warnings for Nim devel.
Add tests for oneIndex(), oneValue().
2019-06-04 19:51:35 +03:00
cheatfate
38dd4cb6e7
Fix for Nim devel discrimination checks.
2019-06-03 10:24:51 +03:00
cheatfate
49bae9792d
Fix documentation for read(n) procedure.
2019-05-28 20:12:00 +03:00