1
0
mirror of https://github.com/danog/amp.git synced 2024-12-04 18:38:17 +01:00
Commit Graph

756 Commits

Author SHA1 Message Date
Aaron Piotrowski
02eb0340f1 Use anonymous classes in Deferred and Emitter 2017-06-04 23:59:23 -05:00
Niklas Keller
332869987b Implement NullCancellationToken 2017-05-24 10:34:54 +02:00
Aaron Piotrowski
cd252e4165 Invoke callback on all non-zero statuses 2017-05-24 00:09:04 -05:00
Niklas Keller
ef6c2b10ee Micro-optimize interval = 0 if 2017-05-23 20:17:34 +02:00
Niklas Keller
38ef4d9ffa Fix issues with interval = 0 repeat watchers, fixes #131 2017-05-23 19:46:23 +02:00
Niklas Keller
dbc853c3f1 Fix timers with interval = 0 in NativeDriver 2017-05-22 19:54:14 +02:00
Aaron Piotrowski
5bca41ade4 Cleaner coroutine continuation 2017-05-22 12:28:29 -05:00
Niklas Keller
5dad46f297 Implement additional cancellation token methods 2017-05-22 19:26:09 +02:00
Bob Weinand
7e500548df Merge pull request #133 from amphp/env-driver
Allow setting the loop driver via the env
2017-05-20 18:12:17 +02:00
Bob Weinand
26dfafe00c Avoid coroutine callstack explosion upon yielding succeeded Promises 2017-05-20 16:31:49 +02:00
Niklas Keller
9d18a1f8bd Readd missing depth property 2017-05-20 09:46:01 +02:00
Niklas Keller
e8e26d79e7 Revert "Drop max continuation depth"
This reverts commit cdf28fa938.

As streams always buffer before applying backpressure, these might
result in a stack overflow. Another example is file streaming with
the blocking driver, which always immediately succeeds.
2017-05-20 09:40:56 +02:00
Niklas Keller
e589f2d935 Remove fallback part from error messages 2017-05-19 16:51:20 +02:00
Niklas Keller
28bb6068f1 Allow setting the loop driver via the env 2017-05-19 16:17:11 +02:00
Bob Weinand
4fe48c8aec Fix #132 (TypeError calling Driver::disable()) 2017-05-19 15:57:49 +02:00
Niklas Keller
39dd36efdc Fix cancellation token example 2017-05-16 21:46:52 +02:00
Aaron Piotrowski
be2a9f8c07 Merge pull request #130 from amphp/cancellation
Implement cancellation primitives, resolves #125
2017-05-16 11:32:42 -05:00
Aaron Piotrowski
086f045003 Remove event to stream map
Unnecessary as the watcher object is available in cancel().
2017-05-16 11:22:40 -05:00
Bob Weinand
6e52f3e211 Fix potential issues when operating on destroyed uv handles in shutdown sequence 2017-05-16 18:17:12 +02:00
Aaron Piotrowski
de783b8eb1 Do not call uv_* functions on expired timers 2017-05-15 12:41:43 -05:00
Niklas Keller
61a7596106 Implement cancellation primitives, resolves #125 2017-05-14 23:07:49 +02:00
Aaron Piotrowski
40299959bf Remove calls to uv_close()
Watchers are closed on garabage collection if necessary.
2017-05-13 10:12:03 -05:00
Aaron Piotrowski
51ab8cb134 Only poll again on UV_EAGAIN 2017-05-13 10:11:00 -05:00
Aaron Piotrowski
3f1f9f41ca Do not call uv_close() if other watchers on the same stream exist 2017-05-11 10:39:31 -05:00
Niklas Keller
50b37b23ef Add asyncCall 2017-05-03 15:21:49 +02:00
Niklas Keller
28820fa459 Ignore __destruct for coverage 2017-05-02 19:30:34 +02:00
Niklas Keller
783fe8c4f4 Add asyncCoroutine and ReactPromise tests 2017-05-02 18:59:52 +02:00
Niklas Keller
141875b133 🔥 Kill pipe and capture
Use Amp\call instead.
2017-05-02 18:32:59 +02:00
Aaron Piotrowski
835e617054 More stream → iterator
Hopefully that's all of them…
2017-05-02 07:07:43 +02:00
Aaron Piotrowski
da9b724f5b getIterator → iterate 2017-05-02 07:07:43 +02:00
Aaron Piotrowski
91c8da9fec Replace more occurrences of stream 2017-05-02 07:07:43 +02:00
Aaron Piotrowski
f78328822c Allow for debugging of double iterator completion 2017-05-02 07:07:43 +02:00
Aaron Piotrowski
45481a710c Squash leftover Stream references 2017-05-02 07:07:33 +02:00
Aaron Piotrowski
38d53304ae Stream → Iterator 2017-05-02 07:07:20 +02:00
Aaron Piotrowski
4992d3ebac Update stream tests 2017-05-02 07:06:20 +02:00
Aaron Piotrowski
a096a36f9a Emitter::resolve → Emitter::complete 2017-05-02 07:04:30 +02:00
Aaron Piotrowski
7e6eb3689e Update stream functions 2017-05-02 07:04:30 +02:00
Aaron Piotrowski
4935dddc84 Refactor Streams
Dropped original Stream interface in favor of the Iterator interface. Eliminates subscriber timing issues and simplifies Stream usage.
2017-05-02 07:04:10 +02:00
Niklas Keller
1286087c06 Rename Pause to Delayed
Pause doesn't cover the delayed value use case.
2017-05-02 07:02:02 +02:00
Aaron Piotrowski
45476b76a4 Reuse watcher resources when possible
Previously, disabling the sole read or write watcher for a stream would result in a duplicate UV-watcher for that stream being created. This keeps track of which UV-watchers are associated with a stream until the watcher is cancelled (not just disabled).
2017-04-24 19:19:22 -05:00
Aaron Piotrowski
e1491b1925 Handle invalid yield like a failed promise 2017-04-24 13:08:30 -05:00
Aaron Piotrowski
34192ceca5 Drop Coroutine::dispose() 2017-04-24 11:10:05 -05:00
Niklas Keller
79ab41e5bf Update php-cs-fixer to version 2 and upgrade rules
This also fixes the code style according to the new rules.
2017-04-24 16:22:02 +02:00
Niklas Keller
e9d48a68d5 Rename createRunnable to asyncCoroutine and createCallable to coroutine 2017-04-24 15:27:04 +02:00
Niklas Keller
dc21d094c5 Throw error in case the loop throws during wait 2017-04-24 15:27:04 +02:00
Niklas Keller
e1c63c62f4 Minor documentation changes 2017-04-24 15:27:04 +02:00
Niklas Keller
65a37484a2 Replace UnionTypeError with factory function + minor doc changes 2017-04-24 15:27:04 +02:00
Niklas Keller
70e63a3748 Fix code style according to new rules 2017-04-24 15:27:04 +02:00
Niklas Keller
dfa40f5b00 Rename wrap to createRunnable and coroutine to createCallable 2017-04-24 15:27:04 +02:00
Niklas Keller
4f8b656513 Document wrap and coroutine better by explicitly naming the differences 2017-04-24 15:27:04 +02:00
Aaron Piotrowski
a562d6b20f Use same poll for read and write watchers
Changed values of Watcher constants to match UV constants because it was easier that way. :-D
2017-04-21 10:54:53 -05:00
Aaron Piotrowski
fdeb427717 Use simple assignment if queue is empty
The common case is for the queue to be empty at the start of the tick, so a call to array_merge() can be avoided in most cases.
2017-04-20 11:26:13 -05:00
Aaron Piotrowski
628d8cbab1 Set next "now" at the beginning of watcher activation 2017-04-20 11:13:17 -05:00
Aaron Piotrowski
4792bf52fe Emulate "now" behavior of libuv/libev in NativeDriver and EventDriver
Timers created while not running when using NativeDriver and EventDriver will include the elapsed time before run() is called. This matches the behavior of EvDriver and UvDriver. Addresses #113.
2017-04-19 17:21:23 -05:00
Aaron Piotrowski
89570e8f6d Move Watcher to Loop namespace 2017-04-18 09:38:16 -05:00
Ciaran Kelly
0e4d4b492e Add missing namespace declarations 2017-04-15 23:16:50 +01:00
Bob Weinand
61b88a780e Merge remote-tracking branch 'origin/kelunik-v2-review' 2017-04-15 00:42:07 +02:00
Aaron Piotrowski
38a6066e53 Remove Message 2017-04-14 09:23:47 -05:00
Niklas Keller
fed09e42ac Fix line lengths 2017-04-13 18:49:32 +02:00
Niklas Keller
5e545301cd Rename Listener to StreamIterator 2017-04-13 18:20:46 +02:00
Niklas Keller
3a42254300 Make Watcher implement Struct 2017-04-13 18:05:59 +02:00
Niklas Keller
3e8b37f21f Remove Amp\Stream\interval and add delay option to fromIterable 2017-04-13 18:05:41 +02:00
Niklas Keller
b810ff1034 Use eval to prevent multiple definitions warnings for Emitter and Deferred 2017-04-13 18:04:51 +02:00
Aaron Piotrowski
a0b8de40fb Null deferred refs 2017-04-07 12:50:01 -05:00
Bob Weinand
f100d9cd8b Fix possible double resolutions 2017-04-07 18:47:44 +02:00
Bob Weinand
c52279065d Remove unnecessary use of temporary variables 2017-04-07 18:09:39 +02:00
Aaron Piotrowski
e43f9afc8f Refactor functions to remove circular refs
This will provide for faster garbage collection of unused promises/deferreds/etc.
2017-04-07 10:51:57 -05:00
Aaron Piotrowski
97dd8d933e Forward UV error to loop error handler and disable watchers 2017-04-06 11:18:33 -05:00
Aaron Piotrowski
d01ee68dd2 Null circular reference on resolution 2017-04-06 09:24:21 -05:00
Aaron Piotrowski
cdf28fa938 Drop max continuation depth
It seems unlikely a real-world application would run out of memory due to call stack depth for normal coroutine continuations (that is, where infinite recursion is not root problem). Hopefully time will not prove me wrong…
2017-03-30 23:45:54 -05:00
Niklas Keller
8caae2253f Allow recording stacktraces to debug double resolution 2017-03-29 17:25:44 +02:00
Aaron Piotrowski
2f7e9a0746 Run returned generator as coroutine from onResolve and onEmit callbacks 2017-03-27 18:37:55 -05:00
Aaron Piotrowski
173549ebba Halt recursive runs with each call to stop, addresses #84 2017-03-27 11:42:51 -05:00
Aaron Piotrowski
cb717952f1 Validate number of required promises 2017-03-27 11:42:11 -05:00
Aaron Piotrowski
c464e070e4 s/fail/succeed 2017-03-26 12:53:26 -05:00
Aaron Piotrowski
67f9f4a569 Drop lift and Promise\map; add required param to Promise\some 2017-03-26 12:34:34 -05:00
Niklas Keller
ff5fef4b93 Fix UV executing multiple IO watchers in different ticks, fixes #85 2017-03-25 19:52:17 +01:00
Niklas Keller
2aa91a6c25 Rename Stream::listen to Stream::onEmit 2017-03-21 18:29:51 +01:00
Niklas Keller
ce269fa516 Rename Promise::when to Promise::onResolve, resolves #77 2017-03-21 17:23:37 +01:00
Niklas Keller
a954f73d8e Update namespacing to be compatible with what's actually used 2017-03-18 21:52:23 +01:00
Aaron Piotrowski
39b95255d2 Reduce code duplication in Coroutine
Hot path is still duplicated for performance, but conversion of non-promise values to promises should be a single method.
2017-03-15 19:10:23 -05:00
Aaron Piotrowski
86b494a5c4 Throw Error if registering signal handler fails 2017-03-15 19:08:00 -05:00
Aaron Piotrowski
a927b3cb06 Separate functions into Promise and Stream namespaces 2017-03-15 19:02:04 -05:00
Niklas Keller
ea67e113b2 Add test for loop accessor 2017-03-15 08:40:58 +01:00
Niklas Keller
01c58ae90e Fix EvDriver with throwing onSignal callback 2017-03-15 08:33:04 +01:00
Niklas Keller
73149b933f Ignore DriverFactory for code coverage 2017-03-14 22:33:45 +01:00
Aaron Piotrowski
6b9ec609c1 Add UnionTypeError 2017-03-14 13:15:31 -05:00
Aaron Piotrowski
44c5a1b1dc Cleanup React promise adaption 2017-03-14 13:15:31 -05:00
Niklas Keller
e92bd57030 Remove outdated @throws RuntimeException 2017-03-14 19:05:38 +01:00
Niklas Keller
c13e8e3a66 Use Error instead of InvalidArgumentException, remove test file 2017-03-14 18:44:44 +01:00
Niklas Keller
ee11b70395 Fix remaining InvalidWatcherError renames 2017-03-14 18:24:14 +01:00
Aaron Piotrowski
1dadd4f0da InvalidWatcherException → InvalidWatcherError 2017-03-14 11:48:27 -05:00
Aaron Piotrowski
2ab7403ded More code coverage ignores; throw Error instead of DomainException 2017-03-14 11:44:19 -05:00
Niklas Keller
35ac983c53 Add appropriate coverage ignores to Driver.php 2017-03-14 11:01:11 +01:00
Aaron Piotrowski
d7353d4d8f Catch watcher callback exceptions individually
Exceptions thrown from watcher callbacks are now forwarded to the loop error handler without ending the current tick. Fixes #74.
2017-03-14 00:20:05 -05:00
Niklas Keller
20acaf123e Remove unsused code from InvalidWatcherException, add handle tests for drivers 2017-03-13 13:56:46 +01:00
Aaron Piotrowski
f187d4b31a Accept React promises in rethrow, wait, timeout, pipe, and capture
Fixes #75.
2017-03-13 07:17:06 +01:00
Aaron Piotrowski
8b7fb9ece3 Merge pull request #72 from amphp/issue-68
Implement yielding arrays as implicit all operator
2017-03-12 22:45:31 -05:00
Niklas Keller
77bd05b807 Fix tests and Producer React adaption 2017-03-12 22:09:19 +01:00
Niklas Keller
0006c6cb56 Fix async-interop docblock leftover 2017-03-12 21:39:17 +01:00
Niklas Keller
e8ea4e2ba9 Implement yielding arrays as implicit all operator, fixes #68 2017-03-12 19:42:25 +01:00
Aaron Piotrowski
2cc4cf9d0b Fix use statement order 2017-03-12 12:23:48 -05:00
Aaron Piotrowski
f040e8801e Fast return on void watcher callback 2017-03-12 12:23:27 -05:00
Aaron Piotrowski
cd4328ab48 Merge branch 'react-compatibility' 2017-03-12 11:38:48 -05:00
Pieter Hordijk
2db7bed1b6 Fixed typos an promise -> a promise 2017-03-12 17:36:07 +01:00
Niklas Keller
d748855a51 Fix some risky tests 2017-03-12 17:33:46 +01:00
Niklas Keller
f5f9410ec0 Rename Factory to DriverFactory, rename supported to isSupported 2017-03-12 11:25:21 +01:00
Niklas Keller
766b3224d1 Rename drivers to have a Driver instead of Loop suffix 2017-03-12 11:21:44 +01:00
Aaron Piotrowski
a98fe5cdf6 Rethrow React promise rejections
Adapt React promises returned from watcher callbacks to promises so that rethrow is called on them.
2017-03-11 09:17:55 -06:00
Aaron Piotrowski
7ad10f5d7d Add support for React promises 2017-03-11 09:17:43 -06:00
Aaron Piotrowski
7ebe70e0ae Fix docblock param formatting
Callable prototypes make alignment a mess… maybe something better can be done.
2017-03-10 23:08:40 -06:00
Aaron Piotrowski
2a9d7cb97b Remove unnecessary parameter 2017-03-10 22:59:11 -06:00
Aaron Piotrowski
85de9f1f1e Remove missed wrap call 2017-03-10 16:23:29 -06:00
Aaron Piotrowski
1fea860a05 Run watcher callbacks as coroutines within drivers 2017-03-10 16:03:41 -06:00
Aaron Piotrowski
ca30af4d22 More type declarations in loop component 2017-03-10 15:46:12 -06:00
Aaron Piotrowski
1929715b97 Remove driver nullability 2017-03-10 15:34:52 -06:00
Aaron Piotrowski
754a29e86c Remove promise error handler
Exceptions thrown from when callbacks are now forwarded directly to the loop error handler.
2017-03-10 15:32:58 -06:00
Niklas Keller
be34c49a2d Fixup all remaining issues, tests pass locally 2017-03-10 22:20:28 +01:00
Niklas Keller
dd8993b98e Fix AsyncInterop → Amp in ErrorHandler 2017-03-10 22:09:49 +01:00
Niklas Keller
0be9ae9ade Switch from AsyncInterop\Promise to Amp\Promise 2017-03-10 21:58:46 +01:00
Niklas Keller
e64bbfb9f5 Add Loop::set, auto-wrapping, fixup things 2017-03-10 21:31:57 +01:00
Niklas Keller
21561661a2 Fixup after repository merge 2017-03-10 19:19:32 +01:00
Niklas Keller
f4f9008ca0 Merge amphp/amp repository into amphp/amp 2017-03-10 18:26:17 +01:00
Aaron Piotrowski
72378e2b82 Add Amp\call() 2017-02-22 15:52:30 -06:00
Aaron Piotrowski
bb51720818 Always use persistent flag for timer
cancel() is called when delay timers are executed anyway, so it doesn't matter what the flags are for the event.
2017-02-16 23:39:11 -06:00
Aaron Piotrowski
9073f6c999 Docblock cleanup 2017-02-16 22:36:32 -06:00
Aaron Piotrowski
d7e8a9de84 Calling stop() in nested loop should not stop outer loop 2017-02-16 22:20:10 -06:00
Aaron Piotrowski
b72e504eab Ensure correct argument order in multi-argument lift 2017-02-09 22:34:24 -06:00
Aaron Piotrowski
3861c6b5da Simpler each and filter implementation 2017-02-09 22:17:45 -06:00
Aaron Piotrowski
5dade2443f Fix error in Message with empty stream 2017-01-31 17:30:05 -06:00
Aaron Piotrowski
5f284b2f70 Refactor Message, add Iterator 2017-01-31 17:09:38 -06:00
Niklas Keller
a69bf4d3a0 Improve type hints / types 2017-01-16 17:39:24 +01:00
Aaron Piotrowski
0631560c65 Merge pull request #62 from amphp/drop-choose
Drop Amp\choose
2017-01-15 08:49:11 -06:00
Aaron Piotrowski
e3cb5dc385 Merge pull request #54 from amphp/ex-msg
Make exception messages more generic
2017-01-15 08:48:56 -06:00
Aaron Piotrowski
84917e7786 Add Message and Listener::getBuffered() 2017-01-13 18:46:32 -06:00
Aaron Piotrowski
df901a0305 Remove stream() method from Listener 2017-01-13 18:12:38 -06:00
Niklas Keller
8f245fa677 Drop Amp\choose 2017-01-13 19:09:17 +01:00
Aaron Piotrowski
a643f9a260 Remove last consumed value from listener before drain 2017-01-11 20:13:12 -06:00
Niklas Keller
6312ac15aa Fix invalid watcher exception construction 2017-01-11 14:28:27 +01:00
Aaron Piotrowski
4c48037295 Add reference/unreference methods to Pause 2017-01-08 01:15:57 -06:00
Aaron Piotrowski
ae28eae552 Lazy → LazyPromise 2017-01-08 01:02:11 -06:00
Aaron Piotrowski
5ad1fdb38b Add more Listener tests and kill another Humbug mutant 2017-01-08 00:22:07 -06:00
Niklas Keller
3b46c168a5 Improve tests and kill some Humbug mutants 2017-01-07 22:55:34 +01:00
Aaron Piotrowski
2976ebdbb5 Throw on consecutive calls to Listener::advance(); better property names 2017-01-07 12:31:36 -06:00
Aaron Piotrowski
cf5ebb1408 Better error message when emitting after resolve 2017-01-07 12:25:04 -06:00
Aaron Piotrowski
cba57dd81e Simplify PrivatePromise and PrivateStream 2017-01-07 12:24:40 -06:00
Niklas Keller
ae69e92266 Update to promise 0.4.0 and event-loop 0.5.0, add humbug config 2017-01-07 13:47:45 +01:00
Niklas Keller
568183b261 Update to event-loop 0.5.0 2017-01-07 13:45:03 +01:00
Aaron Piotrowski
a47fc2bc01 Don't call uv_stop()
libuv will actually stop mid-tick, making the behavior inconsistent with the other loop implementations.
2017-01-06 10:50:05 -06:00
Aaron Piotrowski
e169bb649c Remove unnecessary temp variable 2017-01-06 10:21:58 -06:00
Aaron Piotrowski
fbdc611e44 Activate watchers at begging of tick instead of end 2017-01-06 10:15:54 -06:00
Aaron Piotrowski
3e0cd85b67 Stop watchers in EvLoop::__destruct() to avoid segfault 2017-01-05 17:38:33 -06:00
Aaron Piotrowski
9706815714 Fix signals in multiple loops using event and ev extensions with epoll backend 2017-01-05 17:32:03 -06:00
Aaron Piotrowski
02c2fcf0fa Add implementation using event extension 2017-01-05 14:08:33 -06:00
Aaron Piotrowski
06e50bdb88 Fix docblock 2017-01-05 12:39:34 -06:00
Aaron Piotrowski
80900189c9 Fix visibility of deactivate() 2017-01-05 12:39:10 -06:00
Aaron Piotrowski
9ff73ac681 Swap production and dev definitions for Deferred and Emitter 2017-01-04 10:24:51 -06:00
Aaron Piotrowski
210b6ff258 Observable → Stream 2017-01-03 19:10:27 -06:00
Aaron Piotrowski
a872f14fd4 Drop Amp\range(), add Amp\observableFromIterable() 2016-12-30 12:50:09 -06:00
Bob Weinand
26a707ed94 Always put the watcher back upon re-activation 2016-12-30 00:55:06 +01:00
Aaron Piotrowski
b5d5b8dff1 Drop loop wrapper functions 2016-12-29 16:57:08 -06:00
Aaron Piotrowski
5651240615 Update to promise spec v0.3
Dropped strict-types due to spec requiring weak types in callbacks.
2016-12-29 16:29:27 -06:00
Aaron Piotrowski
81f6d3f94f Avoid pcntl bug with closures 2016-12-29 14:40:12 -06:00
Aaron Piotrowski
6f2a238087 Merge branch 'event-loop-v0.4' into uv 2016-12-28 23:50:30 -06:00
Aaron Piotrowski
b535a72161 Update for loop standard changes 2016-12-28 23:11:08 -06:00
Bob Weinand
04300eba89 Remove redundant destructor 2016-12-29 03:06:53 +01:00
Bob Weinand
7e875298b8 Use getInfo() in __debugInfo() 2016-12-29 01:50:41 +01:00
Aaron Piotrowski
8ab3918974 Remove \UV::RUN_ONCE if not blocking. 2016-12-28 16:16:09 -06:00
Aaron Piotrowski
225c0703ee Merge branch 'event-loop-v0.4' into uv 2016-12-28 13:02:20 -06:00
Aaron Piotrowski
583a50fab7 Update for loop standard changes 2016-12-28 12:59:04 -06:00
Niklas Keller
2a65c0735b Fix docblock for Placeholder::when 2016-12-23 23:48:24 +01:00
Bob Weinand
ef9216a00a Do not block in Loop::dispatch() after Loop::stop() 2016-12-18 21:56:47 +01:00
Aaron Piotrowski
bc1ae1822c Unreference watcher in Amp\timout() 2016-12-17 08:28:19 -06:00
Aaron Piotrowski
11f1c7e7c4 Amp\lazy() → Amp\Lazy
Plus some tests!
2016-12-15 18:50:33 -06:00
Aaron Piotrowski
93ad513ab1 Remove dead code
Deferred and Postponed will never throw from the functions they define.
2016-12-15 17:34:30 -06:00
Aaron Piotrowski
6e97e6630d Fix some function bugs and add more tests 2016-12-15 17:31:57 -06:00
Niklas Keller
1bbcadaedd Rename Observer::next to Observer::advance 2016-12-13 20:37:51 +01:00
Niklas Keller
1299e51ca6 Add tests for InvalidYieldError, improve key display
Without something like var_export, null and false are casted to an empty string.
2016-12-11 17:08:17 +01:00
Niklas Keller
e4d97caad7 Fix whitespace 2016-12-11 16:17:51 +01:00
Niklas Keller
2ba73e90fc Fix documentation to point to when instead of then and done 2016-12-11 16:16:12 +01:00
Niklas Keller
bd7e84a138 Improve error messages 2016-12-11 16:12:42 +01:00
Daniel Lowrey
e3cdea2fce Make exception messages more generic 2016-12-09 12:22:37 -05:00
Aaron Piotrowski
f95412770b Lazy promise bugfix 2016-11-14 14:10:44 -06:00
Aaron Piotrowski
9927ad5b4f Awaitable → Promise 2016-11-14 13:59:21 -06:00
Aaron Piotrowski
7f5142be88 Fix map() return type 2016-09-09 18:05:01 -05:00
Aaron Piotrowski
973a08c26b Update for loop standard v0.3 2016-09-09 17:38:22 -05:00
Aaron Piotrowski
759af93112 Missed static; remove unused import 2016-09-07 12:24:49 -05:00
Aaron Piotrowski
0992eaea89 CallableFromMethod -> CallableMaker 2016-08-30 10:34:17 -05:00
Aaron Piotrowski
448391531e Add CallableFromMethod trait 2016-08-29 18:35:49 -05:00
Aaron Piotrowski
220c969e12 Allow Amp\*() loop callbacks to return values
Asserting that the function be void if not a Generator turned out to be just annoying rather than helpful.
2016-08-29 12:40:13 -05:00
Aaron Piotrowski
44aee8de47 Restrict callback returns to void or Generator 2016-08-26 16:29:57 -05:00
Aaron Piotrowski
edf2984863 Update Observable-based functions
Some of the changes to Observables broke functions using them.
2016-08-23 13:22:24 -05:00
Aaron Piotrowski
f46912d387 Fix bug on null emits 2016-08-23 13:18:56 -05:00
Aaron Piotrowski
6e1c1db5a6 Drop special behavior when emitting an observable 2016-08-23 13:17:59 -05:00
Aaron Piotrowski
3ce0c0dd37 Resolve with boolean, not emitted value 2016-08-23 12:50:16 -05:00
Bob Weinand
c89f10eef0 Make Observer::drain() public 2016-08-23 16:21:05 +02:00
Aaron Piotrowski
5f1354bf1a Add drain() method to Observer 2016-08-23 08:50:04 -05:00
Aaron Piotrowski
ddefcf21f9 Implement Observable in Success and Failure 2016-08-22 16:21:47 -05:00
Aaron Piotrowski
ef143534e3 Fix issue with resolved Observer not receiving all values 2016-08-22 10:54:39 -05:00
Aaron Piotrowski
96e1178b89 Code, docblock, and comment cleanup 2016-08-17 22:25:54 -05:00
Aaron Piotrowski
a8d7d71a1a Drop Future and Producer 2016-08-17 21:17:31 -05:00
Aaron Piotrowski
d4e83490c2 Drop unsubscribing from Observable 2016-08-17 21:11:03 -05:00
Aaron Piotrowski
2317a3aa37 Unsubscribe from emitted observable if failed 2016-08-16 16:31:09 -05:00
Aaron Piotrowski
84c2572e0a Prevent fail call after resolution 2016-08-16 13:30:32 -05:00
Aaron Piotrowski
bdc26e1e8b Combine use statements 2016-08-16 13:07:51 -05:00
Aaron Piotrowski
dae4eb90da Better Emitter fix; fail observable if emitted awaitable fails 2016-08-16 13:07:38 -05:00
Aaron Piotrowski
a8a5a1b3a5 Fix Emitter 2016-08-16 02:28:47 -05:00
Aaron Piotrowski
888229d667 Use strict types 2016-08-15 23:46:26 -05:00
Bob Weinand
6a87658ad8 Remove bogus .coveralls.yml file 2016-08-15 15:41:28 +02:00
Bob Weinand
e7d629e58f Fix signals not being dispatched in NativeLoop
This was the case when at least one expired and non-expired timer existed.
2016-08-14 22:29:30 +02:00
Niklas Keller
cef92e9770 Doc fixes for Coroutine 2016-08-14 19:17:08 +02:00
Bob Weinand
dcf17e3f98 Optimize Producer & remove wait until first subscribe
Also delay first emit in Emitter until next tick
2016-08-14 16:57:17 +02:00
Bob Weinand
08d65bcd63 Make Subscriber not caring about $id type 2016-08-14 04:47:48 +02:00
Bob Weinand
80265b726e Do not have final methods in Struct, functions may need to be overridden 2016-08-14 04:41:47 +02:00
Aaron Piotrowski
42d9b25c3d Temp var unnecessary 2016-08-13 10:24:55 -05:00
Aaron Piotrowski
7bc08b9a6a Replace leftover LogicExceptions exceptions with Error 2016-08-12 16:58:53 -05:00
Aaron Piotrowski
2ff32c2d6b Remove unnecessary default parameter values 2016-08-12 16:38:36 -05:00
Aaron Piotrowski
66c38e1480 Refactor Amp\coroutine()
Any function can now be passed to this function, which now returns a function returning an awaitable.
2016-08-12 14:50:44 -05:00
Aaron Piotrowski
69ec812bc0 Require PHP 7 2016-08-11 14:52:40 -05:00
Aaron Piotrowski
658edf33f7 Use Closure::fromCallable() in 7.1 2016-08-11 13:33:51 -05:00
Aaron Piotrowski
ea66677a50 Update for Driver changes in spec 2016-08-06 08:58:37 -05:00
Aaron Piotrowski
aa7b76e842 Add awaitable/coroutine-aware loop functions
These functions mirror the standard loop methods, but run returned Generators as coroutines and invoke rethrow() on returned awaitables.
2016-08-02 12:48:32 -05:00
Aaron Piotrowski
13908fe2e5 Add concat() function 2016-08-01 11:10:59 -05:00
Aaron Piotrowski
9055f159e7 Revert some() to v1 behavior 2016-07-31 00:31:04 -05:00
Aaron Piotrowski
19e6440897 Fix native loop timers 2016-07-25 10:09:40 -05:00
Aaron Piotrowski
c2caca9d02 Fix functions using Subscriber as Awaitable
Use PHP_INT_MAX instead of 0 for infinite interval() count.
2016-07-20 08:53:18 -05:00
Aaron Piotrowski
7adc7d8452 Remove missed emit() default value 2016-07-20 08:52:19 -05:00
Aaron Piotrowski
8e794ba1d7 Fix stream() 2016-07-19 15:24:05 -05:00
Aaron Piotrowski
24142496d8 Rethrow subscriber callback exceptions from loop 2016-07-19 15:13:56 -05:00
Bob Weinand
1642bf9195 s/settle/any/ which now returns [$errors, $succeeds] 2016-07-19 21:39:09 +02:00
Aaron Piotrowski
bec838b693 Remove leftover exception class
No longer needed as Subscriber is not an awaitable.
2016-07-19 13:30:28 -05:00
Aaron Piotrowski
70123b9a44 Update Producer::resolve(); fix emitting observable 2016-07-19 13:19:44 -05:00
Aaron Piotrowski
9839343bbb Remove default value from emit 2016-07-19 13:10:15 -05:00
Aaron Piotrowski
13a6fc59c4 Producer::init() -> private 2016-07-19 12:42:58 -05:00
Aaron Piotrowski
32b4721c5e Subscriber no longer implements Awaitable 2016-07-19 12:40:16 -05:00
Aaron Piotrowski
90d744537e protected -> private in internal traits 2016-07-19 12:32:43 -05:00
Aaron Piotrowski
3e170639c3 Remove final from Observer and Subscriber 2016-07-19 11:58:20 -05:00
Aaron Piotrowski
dad93a6da0 Merge branch 'observable' into v2 2016-07-18 23:29:19 -05:00
Aaron Piotrowski
b9d554dd7b Add more functions 2016-07-18 23:23:25 -05:00
Aaron Piotrowski
c561197d1d Remove unused v1 files 2016-07-18 23:22:07 -05:00
Aaron Piotrowski
ade997688a Merge branch 'awaitable' into v2 2016-07-18 23:20:05 -05:00
Aaron Piotrowski
3f654cbd5b Initial tests plus some fixes 2016-07-12 11:20:06 -05:00
Bob Weinand
3603d5b1ec EvLoop::enabled() -> supported() 2016-06-26 17:35:25 +02:00
Aaron Piotrowski
2a1fde0b44 Add automatic loop factory bootstrap 2016-06-23 23:37:06 -05:00
Aaron Piotrowski
4ed8e65468 Cleaner resolution 2016-06-16 23:27:14 -05:00
Aaron Piotrowski
92767755ee Avoid loosing exception thrown from generator after invalid yield 2016-06-16 22:44:32 -05:00
Aaron Piotrowski
f553e4f08b Improve coroutine continuation
Duplicated some code for faster coroutine continuation.
2016-06-14 23:26:59 -05:00
Aaron Piotrowski
ae182165e5 Remove circular reference check 2016-06-14 21:53:50 -05:00
Aaron Piotrowski
60d560d70e Add $className param to capture(); other cleanup 2016-06-14 21:40:04 -05:00
Aaron Piotrowski
986b69907f No need to call keepalive within EvLoop
Loop class handles the details necessary to stop the loop if no reference watchers exist.
2016-06-09 12:59:18 -05:00