1
0
mirror of https://github.com/danog/byte-stream.git synced 2024-11-30 04:19:23 +01:00
Commit Graph

209 Commits

Author SHA1 Message Date
Aaron Piotrowski
e123fb1d3e
Use feof() only on macOS and BSD 2019-05-09 10:42:18 -05:00
Niklas Keller
29c78480dc Check EOF before writing as some writes in macOS are not reported as error otherwise
See Amp\ByteStream\Test\ResourceOutputStreamTest::testClosedRemoteSocketWithFork(), which fails without this on macOS.
2019-05-09 08:18:43 +02:00
Niklas Keller
90e8097b52 Fix ResourceOutputStream closed detection
The previous mechanism with feof doesn't work for systemd launched processes.

Fixes #58.
2019-05-09 00:17:28 +02:00
Gabriel Ostrolucký
d5cd42a765 Add chunksize setter to Resource*Stream classes (#55)
Fixes #50.
2019-03-31 16:51:36 +02:00
Niklas Keller
2120bdd46b Revert "Throw new exception carrying $chunk when fwrite returns 0"
This reverts commit eb4d03504d.

The previous commit was incomplete and needs additional work.
2019-03-11 20:12:45 +01:00
Bob Weinand
0652524782
Merge pull request #52 from ostrolucky/chunk-exception
Throw new exception carrying $chunk when fwrite returns 0
2019-03-11 12:59:50 +01:00
Gabriel Ostrolucký
eb4d03504d
Throw new exception carrying $chunk when fwrite returns 0 2019-03-05 00:11:39 +01:00
Niklas Keller
6bbfcb6f47 Add docs/asset to export-ignore 2018-12-27 19:08:06 +01:00
Niklas Keller
aa2ebfe17b Update dependency lock file 2018-12-25 13:42:01 +01:00
Niklas Keller
1de2fd1a17 Test on PHP 7.3 2018-12-25 13:18:57 +01:00
Niklas Keller
56f719633f Fix code style 2018-12-25 13:18:26 +01:00
Niklas Keller
3a4e493d39 Change #47 test case 2018-12-25 13:13:28 +01:00
Niklas Keller
91d0d18b60 Change #47 test case 2018-12-25 13:04:03 +01:00
Niklas Keller
23d720fbb1 Add test case for #47 2018-12-25 12:59:12 +01:00
Niklas Keller
37b9ab16bb
Solve performance issues with very large chunks
Very large chunks need to be copied every time there's a partial write, which is pretty problematic. Instead of doing an almost full copy of the full chunk every time, this patch splits very large chunks into multiple smaller chunks automatically.

Fixes #41.
2018-10-22 14:37:37 -05:00
Aaron Piotrowski
2dda482685 Add getStd*() functions 2018-10-22 20:36:00 +02:00
Niklas Keller
17fae3bcec Fix code style 2018-10-03 17:37:23 +02:00
Niklas Keller
0b282a7321 Add infection and tests 2018-09-23 21:30:08 +02:00
Niklas Keller
f31f990b80 Fix Travis config 2018-09-22 16:04:00 +02:00
Niklas Keller
d161589772 Apply PSR-2 2018-09-22 16:04:00 +02:00
Niklas Keller
73257690b0 Fix import order 2018-09-22 16:04:00 +02:00
Niklas Keller
a4cf31f089 Add buffer test 2018-09-22 16:04:00 +02:00
Niklas Keller
75aa20de7c Add buffer function
This simplifies buffering streams by not having to construct a Message / Payload object.
2018-09-22 16:04:00 +02:00
Niklas Keller
bd2de267cc Update shared documentation files
This is an automated commit. Please report any issues to https://github.com/amphp/website-tools.
2018-05-16 16:15:55 +02:00
Aaron Piotrowski
24b2530ec7
Remove exception overwrite
Copy/paste oversight.
2018-04-05 09:44:39 -05:00
Niklas Keller
1b75b122e6 Fix ZlibInputStreamTest::testRead() for Windows 2018-04-04 07:33:09 +02:00
Aaron Piotrowski
da357d1579
Proper fix for remote closed streams
Fixes #40. Streams on MacOS (and possibly FreeBSD) that are closed by the remote still allow writing, returning a non-zero from fwrite(). EOF then is false, since data was written to the buffer. EOF needed to be checked before calling fwrite().
2018-04-03 19:08:18 -05:00
Niklas Keller
5403767515 Use xdebug instead of phpdbg for coverage
PHPDBG segfaults currently.
2018-04-03 22:15:31 +02:00
Niklas Keller
1184827fd8 Revert "Update test"
This reverts commit 5ba0469d7a.

The test should verify that the socket is detected as closed even if the
work is still alive and has an open FD.
2018-04-03 22:12:42 +02:00
Aaron Piotrowski
5ba0469d7a
Update test 2018-04-03 12:23:39 -05:00
Aaron Piotrowski
33a74dfecd
Fix closed streams that continually report as writable 2018-04-03 11:57:25 -05:00
Niklas Keller
43a93e6240 Add closed stream test with leaked FDs 2018-04-03 18:30:21 +02:00
Niklas Keller
56e814943a Add tests for dead socket detection
Relates to #40.
2018-04-03 18:20:40 +02:00
Aaron Piotrowski
6d6c89f58c
Update docs nav 2018-03-13 10:32:38 -05:00
Aaron Piotrowski
bfa012e810
Add Payload docs 2018-03-13 10:26:29 -05:00
Aaron Piotrowski
6bd0be750d Add Payload
Similar to Message, but does not implement Promise to avoid all the issues that are associated with that.
2018-03-13 09:53:18 -05:00
Niklas Keller
9f60974881 Fix resource input streams
The read watcher needs to be disabled now, because immediate reads will process the next immediate read now in the next tick.

Fixes #38.
2018-03-11 10:19:43 +01:00
Aaron Piotrowski
ca9128aead
Merge pull request #37 from amphp/fix-immediate
Defer immediate reads
2018-03-09 10:44:35 -06:00
Niklas Keller
062f16d0c5 Defer immediate reads
Immediate reads have been introduced to support in-memory streams and STDIN on Windows, but this causes problems during piping of streams that always have data available, because it blocks everything else. This is resolved by deferring the promise resolution to the next tick.
2018-03-09 17:40:36 +01:00
Niklas Keller
a4739c8a6d Attempt direct read on ResourceInputStream::read()
This change should resolve the low performance on Windows' STDIN. STDIN
on Windows is a file handle and Windows has specialized support built
into it's stream_select implementation, but a stream_select with a file
handle takes 100ms, which results in slow performance if we read in
smaller chunks and always have to wait 100ms between these.

Fixes amphp/socket#52.
2018-03-08 11:38:16 +01:00
Aaron Piotrowski
11da27c603
Only throw if resource closed or at eof 2018-02-09 00:47:09 -06:00
Niklas Keller
561c364128 Upgrade documentation dependencies
This fixes the GitHub security warning.
2018-02-07 13:52:39 +01:00
Niklas Keller
2cb8005742 Throw correct exception in ResourceOutputStream after close
Fixes #35.
2018-02-07 13:49:07 +01:00
Niklas Keller
1b0b8daed4 Polyfill STDOUT and STDERR on SAPIs not being CLI
STDERR is used by amphp/parallel for error forwarding from children. STDERR gets written to the error log in case of Apache and similar locations for other SAPIs.

This also ensures STDOUT / STDERR can always be used and only a single stream ID exists for STDOUT / STDERR, which might otherwise error for libuv if people open 'php://stderr' multiple times.

Fixes amphp/parallel-functions#6.
Fixes amphp/parallel#34.
2018-01-12 20:43:00 +01:00
Niklas Keller
0b6d99b2c3 Remove outdated note about closing ResourceInputStreams 2017-12-27 20:13:24 +01:00
Niklas Keller
5dffe33692 Throw correct PendingReadError for IteratorStream 2017-12-22 09:31:37 +01:00
Niklas Keller
926fa6d24d Update shared documentation files
This is an automated commit. Please report any issues to https://github.com/amphp/website-tools.
2017-12-14 19:16:44 +01:00
Niklas Keller
0c059ba0e6 Suppress errors also for stream_socket_shutdown, relates to #32 2017-12-10 17:40:58 +01:00
Niklas Keller
c5e31aa7b7 Fix #32: Suppress errors for feof, because pthreads 2017-12-10 17:36:05 +01:00
Niklas Keller
cd4ef8553e Update shared documentation files
This is an automated commit. Please report any issues to https://github.com/amphp/website-tools.
2017-12-06 12:50:30 +01:00