Ferreteria/v0.6/clade/IO/Aspect/Connx/Stream/Finite/Buffer/Conveyer/Reader

From Woozle Writes Code
< Ferreteria‎ | v0.6‎ | clade‎ | IO‎ | Aspect‎ | Connx‎ | Stream‎ | Finite‎ | Buffer‎ | Conveyer
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 -- //
}