Ferreteria/v0.6/clade/IO/Aspect/Connx/Stream/Finite/Buffer/Conveyer/Reader
Jump to navigation
Jump to search
|
The item documented here has been removed and is no longer in use. As of 2026-02-17, nothing seems to refer to it.
|
Code
<?php namespace Woozalia\Ferret\IO\Aspect\Connx\Stream\Buffer\Conveyer;
/* Base* [ca,i] */ use Woozalia\Ferret\IO\Aspect\Connx\Stream\Buffer\{ cConveyer as BaseClass, iConveyer as BaseIface };
/* How* [c,i] */ use Woozalia\Ferret\IO\Aspect\Connx\aux\{ cItWent as HowClass, iItWent as HowIface };
/* StreamIface */ use Woozalia\Ferret\IO\Aspect\Connx\iStream as StreamIface;
interface iReader extends BaseIface {
// I/O
function ReadIt(StreamIface $o) : HowIface; // read data from $o in smaller bursts
}
class cReader extends BaseClass implements iReader {
// ++ CONFIG ++ //
const IBUFF_SIZE = 1024*64; // 64k input buffer
// -- CONFIG -- //
// ++ I/O ++ //
public function ReadIt(StreamIface $o) : HowIface {
$oHow = new HowClass;
#$this->AmHere('stream type: '.get_debug_type($o->Native()));
$isMore = TRUE;
self::OUpdater()->OnBefore();
while ($isMore) {
self::OUpdater()->OnChange();
$oHowOnce = $o->PullBytes(self::IBUFF_SIZE);
if ($oHowOnce->GetOkay()) {
$oHow->SetOkay(TRUE);
$qs = $oHowOnce->QData();
if ($qs->HasIt()) {
$oHow->QData()->AddIt($qs->GetIt());
}
} else {
$oHow->SetOkay(FALSE);
}
$isMore = $o->MoreBytes();
}
self::OUpdater()->OnAfter();
return $oHow;
}
// -- I/O -- //
}