generated from Nodarx/template
feat: initial version
Signed-off-by: Sebastian Krupinski <root@LAPTOP-7DVOR6NC>
This commit was merged in pull request #1.
This commit is contained in:
44
lib/Client/Transport/Socket/SocketResponseStream.php
Normal file
44
lib/Client/Transport/Socket/SocketResponseStream.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Gricob\IMAP\Transport\Socket;
|
||||
|
||||
use Gricob\IMAP\Transport\ResponseStream;
|
||||
|
||||
final class SocketResponseStream implements ResponseStream
|
||||
{
|
||||
/**
|
||||
* @param resource $stream
|
||||
*/
|
||||
public function __construct(private $stream)
|
||||
{
|
||||
}
|
||||
|
||||
public function read(int $bytes): string
|
||||
{
|
||||
if ($bytes <= 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$remainingBytes = $bytes;
|
||||
$data = '';
|
||||
do {
|
||||
$data .= fread($this->stream, $remainingBytes);
|
||||
$remainingBytes = $bytes - strlen($data);
|
||||
} while ($remainingBytes > 0);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function readLine(): string
|
||||
{
|
||||
$line = '';
|
||||
|
||||
while ("\n" !== ($char = fread($this->stream, 1))) {
|
||||
$line .= $char;
|
||||
}
|
||||
|
||||
return $line."\n";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user