Initial commit

This commit is contained in:
2025-08-10 15:33:20 +02:00
commit 65e508927a
7 changed files with 526 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
<?php
namespace NoccyLabs\React\Utilities;
use React\EventLoop\Loop;
use React\EventLoop\LoopInterface;
function defer(callable $func, ?LoopInterface $loop = null): void {
if ($loop) {
$loop->futureTick($func);
} else {
Loop::futureTick($func);
}
}
// $_RU_CONSUMING = false;
// $_RU_ENQUEUED = [];
function enqueue(callable $func): void {
global $_RU_ENQUEUED, $_RU_CONSUMING;
if (!isset($_RU_ENQUEUED)) $_RU_ENQUEUED = [];
array_push($_RU_ENQUEUED, $func);
if (!$_RU_CONSUMING) {
$_RU_CONSUMING = true;
defer(consume(...));
}
}
function consume(): void {
global $_RU_ENQUEUED, $_RU_CONSUMING;
if (count($_RU_ENQUEUED) == 0) {
$_RU_CONSUMING = false;
return;
}
$func = array_shift($_RU_ENQUEUED);
call_user_func($func);
defer(consume(...));
}