Ferreteria/v0.6/clade/IO/Aspect/Connx/run/Starter/@code/cur/2026/02/25

From WoozleCodes
Jump to navigation Jump to search
2026/02/24 2026/02/25 2026/02/26

Works for exports:

interface iRunner extends BaseIface, ClientIface, ServerIface {
    // LIFECYCLE
    ## function Open() : OpenIface;
    ## function Shut() : ShutIface;
    // EXEC (DOCS: https://wooz.dev/Ferreteria/v0.6/clade/IO/Aspect/Connx/Runner/@fx/DoCommand)
    function DoCommand(CLineIface $oCmd) : ResultIface;
    // OUTPUT
    #{I} function DescribeInline() : string;
    // OBJECTS
    function OResult(?ResultIface $o=NULL) : ResultIface;
    function QOAudience() : QStreamIface;
    function QOLecturer() : QStreamIface;
    function QPanel() : QPanelIface;
}
abstract class caRunner extends BaseClass implements SelfIface {
    use ClientTrait;

    // ++ ACTION ++ //
    // ++ ACTION: I/O ++

    public function PullBytes(int $nMax=NULL) : OpDataIface {
        echo $this->OProcess()->ReflectThis()->Report(); die();
        #return $this->OProcess()-> ...something...
    }
    // ACTION: add on as new bytes
    public function PushBytes(string $s) : OpDataIface {
        echo $this->OProcess()->ReflectThis()->Report(); die();
    }

    // -- ACTION -- //
    // ++ OBJECTS ++ //

    private $oRes = NULL;
    public function OResult(?ResultIface $o=NULL) : ResultIface { return is_null($o) ? ($this->oRes ?? $this->OResultNew()) : ($this->oRes = $o); }
    protected function OResultNew() : ResultIface { return ($this->oRes = ResultClass::FromOAPipes($this->OAPipes())); }

    private $qoAud = NULL;
    public function QOAudience() : QStreamIface { return $this->qoAud ?? ($this->qoAud = QStreamClass::AsNew()); }
    private $qoLec = NULL;
    public function QOLecturer() : QStreamIface { return $this->qoLec ?? ($this->qoLec = QStreamClass::AsNew()); }

    private $qoPanel = NULL;
    public function QPanel() : QPanelIface { return $this->qoPanel ?? ($this->qoPanel = QPanelClass::AsNew()); }

    // ++ OBJECTS ++ //
}