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 12#12ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 31#31ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 33#33ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 32#32ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 35#35ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 25#25ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 13#13ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 14#14ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 17#17ย 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 19#19ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 28#28ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 27#27ย 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 22#22ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 23#23ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 24#24ย In reactphp-parallel/event-loop;
- Status: Merged (completed).reactphp-parallel/event-loopnumber 15#15ย 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 64#64ย 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 53#53ย In reactphp-parallel/event-loop;