Fully reworked the event loop public facing API to utilize fibers:
Channels
From:
use parallel\Channel;
use React\EventLoop\Factory;
use ReactParallel\EventLoop\EventLoopBridge;
$loop = Factory::create();
$eventLoopBridge = new EventLoopBridge($loop);
$channel = new Channel(Channel::Infinite);
$eventLoopBridge->observe($channel)->subscribe(function (string $message) {
echo $message, PHP_EOL;
});
$loop->futureTick(function () use ($channel): void {
$channel->send('Hello World!');
$channel->close();
});
$loop->run();
To:
use parallel\Channel;
use React\EventLoop\Loop;
use ReactParallel\EventLoop\EventLoopBridge;
use function React\Async\async;
use function React\Async\await;
use function React\Promise\Timer\sleep;
$eventLoopBridge = new EventLoopBridge();
Loop::futureTick(async(static function () use ($eventLoopBridge) {
/** @var Channel<string> */
$channel = new Channel(Channel::Infinite);
Loop::futureTick(async(function () use ($channel): void {
$channel->send('Hello World!');
// Don't close the channel right after writing to it,
// as it will be closed on both ends and the other
// thread won't receive your message
await(sleep(1));
$channel->close();
}));
foreach ($eventLoopBridge->observe($channel) as $message) {
echo $message, PHP_EOL;
}
}));
Futures
From:
use parallel\Channel;
use React\EventLoop\Factory;
use ReactParallel\EventLoop\EventLoopBridge;
use function parallel\run;
$loop = Factory::create();
$eventLoopBridge = new EventLoopBridge($loop);
$future = run(function (): string {
return 'Hello World!';
});
$channel = new Channel(Channel::Infinite);
$eventLoopBridge->await($future)->then(function (string $message) {
echo $message, PHP_EOL;
});
$loop->run();
To:
use React\EventLoop\Loop;
use ReactParallel\EventLoop\EventLoopBridge;
use function parallel\run;
use function React\Async\async;
$eventLoopBridge = new EventLoopBridge();
Loop::futureTick(async(static function () use ($eventLoopBridge) {
$future = run(function (): string {
return 'Hello World!';
});
echo $eventLoopBridge->await($future), PHP_EOL;
}));
List view
0 issues of 38 selected
- Status: Merged (completed).reactphp-parallel/event-loopnumber 53#53ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 51#51ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 48#48ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 49#49ย In reactphp-parallel/event-loop;
- Status: Closed (abandoned).reactphp-parallel/event-loopnumber 45#45ย In reactphp-parallel/event-loop;
- Status: Closed (abandoned).reactphp-parallel/event-loopnumber 46#46ย In reactphp-parallel/event-loop;
- Status: Closed (abandoned).reactphp-parallel/event-loopnumber 47#47ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 52#52ย In reactphp-parallel/event-loop;
- Status: Closed (abandoned).reactphp-parallel/event-loopnumber 57#57ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 56#56ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 55#55ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 63#63ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 62#62ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 61#61ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 64#64ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 58#58ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 59#59ย In reactphp-parallel/event-loop;
- Status: Closed (abandoned).reactphp-parallel/event-loopnumber 26#26ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 20#20ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 21#21ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 27#27ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 18#18ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 16#16ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 19#19ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 35#35ย In reactphp-parallel/event-loop;