1
0
Fork 0

Revert "Handle closed input or output stream (#110)"

This reverts commit 83afa0c1b8.
pull/116/head
Felix Becker 2016-10-24 23:20:15 +02:00
parent 5ecab683eb
commit cd3bf18fe2
2 changed files with 12 additions and 6 deletions

View File

@ -6,7 +6,6 @@ namespace LanguageServer;
use LanguageServer\Protocol\Message; use LanguageServer\Protocol\Message;
use AdvancedJsonRpc\Message as MessageBody; use AdvancedJsonRpc\Message as MessageBody;
use Sabre\Event\Loop; use Sabre\Event\Loop;
use RuntimeException;
class ProtocolStreamReader implements ProtocolReader class ProtocolStreamReader implements ProtocolReader
{ {
@ -26,11 +25,8 @@ class ProtocolStreamReader implements ProtocolReader
public function __construct($input) public function __construct($input)
{ {
$this->input = $input; $this->input = $input;
Loop\addReadStream($this->input, function () {
if (feof($this->input)) {
throw new RuntimeException('Stream is closed');
}
Loop\addReadStream($this->input, function () {
while (($c = fgetc($this->input)) !== false && $c !== '') { while (($c = fgetc($this->input)) !== false && $c !== '') {
$this->buffer .= $c; $this->buffer .= $c;
switch ($this->parsingMode) { switch ($this->parsingMode) {

View File

@ -4,6 +4,7 @@ declare(strict_types = 1);
namespace LanguageServer; namespace LanguageServer;
use LanguageServer\Protocol\Message; use LanguageServer\Protocol\Message;
use RuntimeException;
class ProtocolStreamWriter implements ProtocolWriter class ProtocolStreamWriter implements ProtocolWriter
{ {
@ -30,7 +31,16 @@ class ProtocolStreamWriter implements ProtocolWriter
$totalBytesWritten = 0; $totalBytesWritten = 0;
while ($totalBytesWritten < $msgSize) { while ($totalBytesWritten < $msgSize) {
$bytesWritten = fwrite($this->output, substr($data, $totalBytesWritten)); error_clear_last();
$bytesWritten = @fwrite($this->output, substr($data, $totalBytesWritten));
if ($bytesWritten === false) {
$error = error_get_last();
if ($error !== null) {
throw new RuntimeException('Could not write message: ' . error_get_last()['message']);
} else {
throw new RuntimeException('Could not write message');
}
}
$totalBytesWritten += $bytesWritten; $totalBytesWritten += $bytesWritten;
} }
} }