MultipleStreamWriter() to single WriteStream()

This commit is contained in:
the-djmaze 2023-05-08 14:20:04 +02:00
parent 2d52493b89
commit 8b4674b87f
5 changed files with 48 additions and 59 deletions

View file

@ -609,52 +609,44 @@ abstract class Utils
/**
* @param resource $rRead
* @param resource $rWrite
*/
public static function MultipleStreamWriter($rRead, array $aWrite, int $iBufferLen = 8192, bool $bResetTimeLimit = true, bool $bFixCrLf = false, bool $bRewindOnComplete = false) : int
public static function WriteStream($rRead, $rWrite, int $iBufferLen = 8192, bool $bFixCrLf = false, bool $bRewindOnComplete = false) : int
{
$mResult = false;
if (\is_resource($rRead) && \count($aWrite)) {
$mResult = 0;
while (!\feof($rRead)) {
$sBuffer = \fread($rRead, $iBufferLen);
if (false === $sBuffer) {
$mResult = false;
break;
}
if ('' === $sBuffer) {
break;
}
if ($bFixCrLf) {
$sBuffer = \str_replace("\n", "\r\n", \str_replace("\r", '', $sBuffer));
}
$mResult += \strlen($sBuffer);
foreach ($aWrite as $rWriteStream) {
$mWriteResult = \fwrite($rWriteStream, $sBuffer);
if (false === $mWriteResult) {
$mResult = false;
break 2;
}
}
if ($bResetTimeLimit) {
static::ResetTimeLimit();
}
}
if (!\is_resource($rRead) || !\is_resource($rWrite)) {
return -1;
}
if ($mResult && $bRewindOnComplete) {
foreach ($aWrite as $rWriteStream) {
if (\is_resource($rWriteStream)) {
\rewind($rWriteStream);
}
$iResult = 0;
while (!\feof($rRead)) {
$sBuffer = \fread($rRead, $iBufferLen);
if (false === $sBuffer) {
return -1;
}
if ('' === $sBuffer) {
break;
}
if ($bFixCrLf) {
$sBuffer = \str_replace("\n", "\r\n", \str_replace("\r", '', $sBuffer));
}
$iResult += \strlen($sBuffer);
if (false === \fwrite($rWrite, $sBuffer)) {
return -1;
}
static::ResetTimeLimit();
}
return $mResult;
if ($bRewindOnComplete) {
\rewind($rWrite);
}
return $iResult;
}
public static function Utf7ModifiedToUtf8(string $sStr) : string

View file

@ -173,7 +173,7 @@ trait Messages
{
$this->writeLog('Write to connection stream', \LOG_INFO);
\MailSo\Base\Utils::MultipleStreamWriter($rMessageStream, array($this->ConnectionResource()));
\MailSo\Base\Utils::WriteStream($rMessageStream, $this->ConnectionResource());
$this->sendRaw('');
$oResponses = $this->getResponse();

View file

@ -152,15 +152,12 @@ trait Attachments
unset($sContentType, $sFileName, $sMimeIndex);
if (\is_resource($rResource))
{
if (\is_resource($rResource)) {
$sHash = \MailSo\Base\Utils::Sha1Rand($sFileNameIn.'~'.$sContentTypeIn);
$rTempResource = $oFileProvider->GetFile($oAccount, $sHash, 'wb+');
if (\is_resource($rTempResource))
{
if (false !== \MailSo\Base\Utils::MultipleStreamWriter($rResource, array($rTempResource)))
{
if (\is_resource($rTempResource)) {
if (-1 < \MailSo\Base\Utils::WriteStream($rResource, $rTempResource)) {
$sResultHash = $sHash;
}

View file

@ -113,8 +113,7 @@ trait Messages
if ($oMessage) {
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
$oMessage->ToStream(false), array($rMessageStream), 8192, true, true);
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream($oMessage->ToStream(false), $rMessageStream, 8192, true);
if (false !== $iMessageStreamSize) {
$sMessageId = $oMessage->MessageId();
@ -168,8 +167,9 @@ trait Messages
if ($oMessage) {
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
$oMessage->ToStream(true), array($rMessageStream), 8192, true, true, true);
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream(
$oMessage->ToStream(true), $rMessageStream, 8192, true, true
);
if (false !== $iMessageStreamSize) {
$bDsn = !empty($this->GetActionParam('dsn', 0));
@ -217,8 +217,9 @@ trait Messages
} else {
$rAppendMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
$iAppendMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
$oMessage->ToStream(false), array($rAppendMessageStream), 8192, true, true, true);
$iAppendMessageStreamSize = \MailSo\Base\Utils::WriteStream(
$oMessage->ToStream(false), $rAppendMessageStream, 8192, true, true
);
$this->Plugins()->RunHook('filter.send-message-stream',
array($oAccount, &$rAppendMessageStream, &$iAppendMessageStreamSize));
@ -317,8 +318,9 @@ trait Messages
if ($oMessage) {
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
$oMessage->ToStream(true), array($rMessageStream), 8192, true, true, true);
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream(
$oMessage->ToStream(true), $rMessageStream, 8192, true, true
);
if (false !== $iMessageStreamSize) {
$this->smtpSendMessage($oAccount, $oMessage, $rMessageStream, $iMessageStreamSize, false);

View file

@ -28,12 +28,10 @@ class FileStorage implements \RainLoop\Providers\Files\IFiles
public function PutFile(\RainLoop\Model\Account $oAccount, string $sKey, /*resource*/ $rSource) : bool
{
$bResult = false;
if ($rSource)
{
if ($rSource) {
$rOpenOutput = \fopen($this->generateFullFileName($oAccount, $sKey, true), 'w+b');
if ($rOpenOutput)
{
$bResult = (false !== \MailSo\Base\Utils::MultipleStreamWriter($rSource, array($rOpenOutput)));
if ($rOpenOutput) {
$bResult = (false !== \MailSo\Base\Utils::WriteStream($rSource, $rOpenOutput));
\fclose($rOpenOutput);
}
}