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