1
0
mirror of https://github.com/danog/amp.git synced 2024-11-27 12:35:02 +01:00
Go to file
Bob Weinand b197b2c07d Put Loop::execute() $callback into Driver::defer()
This also ensures that potential throwing in the callback will be handled inside a potential error handler instead of immediately falling through.
2016-05-26 23:45:27 +02:00
src Put Loop::execute() $callback into Driver::defer() 2016-05-26 23:45:27 +02:00
test Put Loop::execute() $callback into Driver::defer() 2016-05-26 23:45:27 +02:00
.gitignore Shorten namespace to Interop\Async and correct PHP version requirement 2016-05-15 14:40:07 +02:00
.travis.yml Add HHVM to Travis 2016-05-20 09:41:25 +02:00
composer.json Put Loop::execute() $callback into Driver::defer() 2016-05-26 23:45:27 +02:00
LICENSE Initial commit 2016-01-20 10:52:37 +00:00
phpunit.xml Refactor Registry into a trait, so it can be tested separately 2016-05-16 11:02:13 +02:00
README.md Add Daniel Lowrey to Contributors 2016-05-21 13:13:51 +02:00

Event Loop Interopability

The purpose of this proposal is to provide a common interface for event loop implementations. This will allow libraries and components from different vendors to operate in an event driven architecture, sharing a common event loop.

Why Bother?

Some programming languages, such as Javascript, have an event loop that is native to the execution environment. This allows package vendors to easily create asynchronous software that uses this native event loop. Although PHP is historically a synchronous programming environment, it is still possible to use asynchronous programming techniques. Using these techniques, package vendors have created PHP event loop implementations that have seen success.

However, as these event loop implementations are from package vendors, it is not yet possible to create event driven software components that are independent of the underlying event loop implementation. By creating a common interface for an event loop, interoperability of this nature will be possible.

Goals

The functionality exposed by this interface should include the ability to:

  • Watch input streams for available data
  • Watch output streams for the ability to perform non-blocking write operations
  • Run single and periodic timers
  • Listen for signals
  • Defer the execution of callables

Contributors