<?php namespace React\EventLoop; use React\EventLoop\Timer\TimerInterface; interface LoopInterface { /** * Register a listener to be notified when a stream is ready to read. * * @param resource $stream The PHP stream resource to check. * @param callable $listener Invoked when the stream is ready. */ public function addReadStream($stream, callable $listener); /** * Register a listener to be notified when a stream is ready to write. * * @param resource $stream The PHP stream resource to check. * @param callable $listener Invoked when the stream is ready. */ public function addWriteStream($stream, callable $listener); /** * Remove the read event listener for the given stream. * * @param resource $stream The PHP stream resource. */ public function removeReadStream($stream); /** * Remove the write event listener for the given stream. * * @param resource $stream The PHP stream resource. */ public function removeWriteStream($stream); /** * Remove all listeners for the given stream. * * @param resource $stream The PHP stream resource. */ public function removeStream($stream); /** * Enqueue a callback to be invoked once after the given interval. * * The execution order of timers scheduled to execute at the same time is * not guaranteed. * * @param int|float $interval The number of seconds to wait before execution. * @param callable $callback The callback to invoke. * * @return TimerInterface */ public function addTimer($interval, callable $callback); /** * Enqueue a callback to be invoked repeatedly after the given interval. * * The execution order of timers scheduled to execute at the same time is * not guaranteed. * * @param int|float $interval The number of seconds to wait before execution. * @param callable $callback The callback to invoke. * * @return TimerInterface */ public function addPeriodicTimer($interval, callable $callback); /** * Cancel a pending timer. * * @param TimerInterface $timer The timer to cancel. */ public function cancelTimer(TimerInterface $timer); /** * Check if a given timer is active. * * @param TimerInterface $timer The timer to check. * * @return boolean True if the timer is still enqueued for execution. */ public function isTimerActive(TimerInterface $timer); /** * Schedule a callback to be invoked on the next tick of the event loop. * * Callbacks are guaranteed to be executed in the order they are enqueued, * before any timer or stream events. * * @param callable $listener The callback to invoke. */ public function nextTick(callable $listener); /** * Schedule a callback to be invoked on a future tick of the event loop. * * Callbacks are guaranteed to be executed in the order they are enqueued. * * @param callable $listener The callback to invoke. */ public function futureTick(callable $listener); /** * Perform a single iteration of the event loop. */ public function tick(); /** * Run the event loop until there are no more tasks to perform. */ public function run(); /** * Instruct a running event loop to stop. */ public function stop(); }