1
0
mirror of https://github.com/danog/amp.git synced 2024-12-04 02:17:54 +01:00
amp/src/Alert/Reactor.php

119 lines
4.1 KiB
PHP
Raw Normal View History

2013-08-05 22:05:08 +02:00
<?php
namespace Alert;
interface Reactor {
/**
* Start the event reactor and assume program flow control
*
* @param $onStart Optional callback to invoke immediately upon reactor start
2013-08-05 22:05:08 +02:00
*/
function run(callable $onStart = NULL);
2013-08-05 22:05:08 +02:00
/**
* Execute a single event loop iteration
*/
function tick();
/**
* Stop the event reactor
*/
function stop();
/**
* Schedule a callback for immediate invocation in the next event loop iteration
*
2013-11-27 18:05:08 +01:00
* Though it can't be enforced at the interface level all timer/stream scheduling methods
* should return a unique integer identifying the relevant watcher.
*
2013-08-05 22:05:08 +02:00
* @param callable $callback Any valid PHP callable
*/
function immediately(callable $callback);
/**
* Schedule a callback to execute once
*
2013-11-27 18:05:08 +01:00
* Time intervals are measured in seconds. Floating point values < 0 denote intervals less than
* one second. e.g. $interval = 0.001 means a one millisecond interval.
*
* Though it can't be enforced at the interface level all timer/stream scheduling methods
* should return a unique integer identifying the relevant watcher.
*
2013-08-05 22:05:08 +02:00
* @param callable $callback Any valid PHP callable
* @param float $delay The delay in seconds before the callback will be invoked (zero is allowed)
*/
function once(callable $callback, $delay);
/**
* Schedule a recurring callback to execute every $interval seconds until cancelled
*
2013-11-27 18:05:08 +01:00
* Time intervals are measured in seconds. Floating point values < 0 denote intervals less than
* one second. e.g. $interval = 0.001 means a one millisecond interval.
*
* Though it can't be enforced at the interface level all timer/stream scheduling methods
* should return a unique integer identifying the relevant watcher.
*
2013-08-05 22:05:08 +02:00
* @param callable $callback Any valid PHP callable
* @param float $interval The interval in seconds to observe between callback executions (zero is allowed)
*/
function repeat(callable $callback, $interval);
2013-11-27 17:56:29 +01:00
2013-08-05 22:05:08 +02:00
/**
* Schedule an event to trigger once at the specified time
2013-11-27 17:56:29 +01:00
*
2013-11-27 18:05:08 +01:00
* Though it can't be enforced at the interface level all timer/stream scheduling methods
* should return a unique integer identifying the relevant watcher.
*
2013-08-05 22:05:08 +02:00
* @param callable $callback Any valid PHP callable
* @param string $timeString Any string that can be parsed by strtotime() and is in the future
*/
function at(callable $callback, $timeString);
/**
* Watch a stream resource for IO readable data and trigger the callback when actionable
*
2013-11-27 18:05:08 +01:00
* Though it can't be enforced at the interface level all timer/stream scheduling methods
* should return a unique integer identifying the relevant watcher.
*
2013-08-05 22:05:08 +02:00
* @param resource $stream A stream resource to watch for readable data
* @param callable $callback Any valid PHP callable
* @param bool $enableNow Should the watcher be enabled now or held for later use?
*/
function onReadable($stream, callable $callback, $enableNow = TRUE);
/**
* Watch a stream resource to become writable and trigger the callback when actionable
*
2013-11-27 18:05:08 +01:00
* Though it can't be enforced at the interface level all timer/stream scheduling methods
* should return a unique integer identifying the relevant watcher.
*
2013-08-05 22:05:08 +02:00
* @param resource $stream A stream resource to watch for writability
* @param callable $callback Any valid PHP callable
* @param bool $enableNow Should the watcher be enabled now or held for later use?
*/
function onWritable($stream, callable $callback, $enableNow = TRUE);
/**
* Cancel an existing timer/stream watcher
*
* @param int $watcherId
*/
function cancel($watcherId);
/**
* Temporarily disable (but don't cancel) an existing timer/stream watcher
*
* @param int $watcherId
*/
function disable($watcherId);
/**
* Enable a disabled timer/stream watcher
*
* @param int $watcherId
*/
function enable($watcherId);
}