aboutsummaryrefslogblamecommitdiffstats
path: root/vendor/sabre/event/lib/Loop/functions.php
blob: b5884b2b62f73180156f9c58b681c324e523d39b (plain) (tree)
1
2
3
4
5
6
7
8
9
                               




                                       

               
   

                                                   
                                          
 






                                                                        
   

                                                            
                                                  
 


   
                            

               
   

                                           
                                           
 



                                                                 

               
   

                                 
                              
 

 
 









                                                                         
               
   

                                               
                                            
 











                                                                          
               
   

                                                
                                             
 





                                    
               
   

                                    
                                          
 





                                     
               
   

                                     
                                           
 

 
 


                 
                                                                       
          

               
   

                
                      
 












                                                                         
   

                                           
                                    
 


   


                            
   

                 
                       
 



                                            
   

                                                





                           
                 
 
 
<?php declare (strict_types=1);

namespace Sabre\Event\Loop;

/**
 * Executes a function after x seconds.
 *
 * @return void
 */
function setTimeout(callable $cb, float $timeout) {

    instance()->setTimeout($cb, $timeout);

}

/**
 * Executes a function every x seconds.
 *
 * The value this function returns can be used to stop the interval with
 * clearInterval.
 */
function setInterval(callable $cb, float $timeout) : array {

    return instance()->setInterval($cb, $timeout);

}

/**
 * Stops a running interval.
 *
 * @return void
 */
function clearInterval(array $intervalId) {

    instance()->clearInterval($intervalId);

}

/**
 * Runs a function immediately at the next iteration of the loop.
 *
 * @return void
 */
function nextTick(callable $cb) {

    instance()->nextTick($cb);

}


/**
 * Adds a read stream.
 *
 * The callback will be called as soon as there is something to read from
 * the stream.
 *
 * You MUST call removeReadStream after you are done with the stream, to
 * prevent the eventloop from never stopping.
 *
 * @param resource $stream
 * @return void
 */
function addReadStream($stream, callable $cb) {

    instance()->addReadStream($stream, $cb);

}

/**
 * Adds a write stream.
 *
 * The callback will be called as soon as the system reports it's ready to
 * receive writes on the stream.
 *
 * You MUST call removeWriteStream after you are done with the stream, to
 * prevent the eventloop from never stopping.
 *
 * @param resource $stream
 * @return void
 */
function addWriteStream($stream, callable $cb) {

    instance()->addWriteStream($stream, $cb);

}

/**
 * Stop watching a stream for reads.
 *
 * @param resource $stream
 * @return void
 */
function removeReadStream($stream) {

    instance()->removeReadStream($stream);

}

/**
 * Stop watching a stream for writes.
 *
 * @param resource $stream
 * @return void
 */
function removeWriteStream($stream) {

    instance()->removeWriteStream($stream);

}


/**
 * Runs the loop.
 *
 * This function will run continiously, until there's no more events to
 * handle.
 *
 * @return void
 */
function run() {

    instance()->run();

}

/**
 * Executes all pending events.
 *
 * If $block is turned true, this function will block until any event is
 * triggered.
 *
 * If there are now timeouts, nextTick callbacks or events in the loop at
 * all, this function will exit immediately.
 *
 * This function will return true if there are _any_ events left in the
 * loop after the tick.
 */
function tick(bool $block = false) : bool {

    return instance()->tick($block);

}

/**
 * Stops a running eventloop
 *
 * @return void
 */
function stop() {

    instance()->stop();

}

/**
 * Retrieves or sets the global Loop object.
 */
function instance(Loop $newLoop = null) : Loop {

    static $loop;
    if ($newLoop) {
        $loop = $newLoop;
    } elseif (!$loop) {
        $loop = new Loop();
    }
    return $loop;

}