Ferreteria/v0.6/clade/IO/Aspect/Connx/Plug/Chain
Jump to navigation
Jump to search
| ||||||||||||||||||||||||
About
- PURPOSE: A that goes through another socket (for e.g. tunnels)
History
Code
as of 2025-10-22
interface iChain extends BaseIface {}
class cChain extends BaseClass implements SelfIface {
// ++ LIFECYCLE ++ //
// ACTION: Pass the event on to the Plug.
protected function ActualOpen() : ActionIface {
$oPlug = $this->OSock()->OPlug();
if ($oPlug === $this) {
echo $this->Inspect()->ReflectThis()->Report();
#echo 'THIS: '.$this->Inspect()->RenderInLine().CRLF;
echo 'THIS: '.$this->DescribeInline().CRLF;
echo 'PLUG: '.$oPlug->DescribeInline().CRLF;
$oStk = $this->StackFromCurrent();
echo 'CONFIG ERROR: Plug is $this; halting to prevent infinite loop.'.CRLF.$oStk->Render();
die();
}
return $oPlug->ActualOpen();
}
// ACTION: Pass the event on to the Plug.
protected function ActualShut() : ActionIface {
$oPlug = $this->OSock()->OPlug();
return $oPlug->ActualShut();
}
// -- LIFECYCLE -- //
// ++ I/O ++ //
public function DoCommand(string|array $saCmd, BufferIface $oBuff, ?CommOpIface $oAct=NULL) : CommOpIface {
return $this->ForwardCommand($saCmd,$oBuff,$oAct);
}
protected function ForwardCommand(string|array $saCmd, BufferIface $oBuff, ?CommOpIface $oAct=NULL) : CommOpIface {
return $this->OSock()->OPlug()->DoCommand($saCmd,$oBuff,$oAct);
}
// -- I/O -- //
// ++ UI ++ //
public function DescribeInline() : string { return ' via '.$this->OSock()->DescribeInline(); }
}