<?php

namespace Kicken\Fibers\FiberEventLoop\Trigger;

use 
Kicken\Fibers\FiberEventLoop\TriggerMonitor;

class 
StreamReadable implements Trigger {
    public function 
__construct(private readonly mixed $stream){
    }

    public function 
prepare(TriggerMonitor $monitor) : void{
        
$monitor->addStreamReadable($this->stream);
    }

    public function 
isTriggered(TriggerMonitor $monitor) : bool{
        return !
is_resource($this->stream) || $monitor->isReadable($this->stream);
    }

    public function 
getResumeData() : mixed{
        return 
null;
    }
}