Skip to content

Commit

Permalink
Update MacroTask.php
Browse files Browse the repository at this point in the history
  • Loading branch information
VennDev authored Aug 15, 2024
1 parent 40702fe commit 703d0a8
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions src/vennv/vapm/simultaneous/MacroTask.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@

namespace vennv\vapm\simultaneous;

use Throwable;
use SplQueue;
use function microtime;
use const PHP_INT_MAX;

final class MicroTask
final class MacroTask
{

private static int $nextId = 0;

/**
* @var ?SplQueue
*/
Expand All @@ -40,19 +41,24 @@ public static function init(): void
if (self::$tasks === null) self::$tasks = new SplQueue();
}

public static function addTask(Promise $promise): void
public static function generateId(): int
{
if (self::$nextId >= PHP_INT_MAX) self::$nextId = 0;
return self::$nextId++;
}

public static function addTask(SampleMacro $sampleMacro): void
{
self::$tasks->enqueue($promise);
self::$tasks->enqueue($sampleMacro);

Check failure on line 52 in src/vennv/vapm/simultaneous/MacroTask.php

View workflow job for this annotation

GitHub Actions / Jobs (8.2)

Cannot call method enqueue() on SplQueue|null.
}

public static function getTask(int $id): ?Promise
public static function getTask(int $id): ?SampleMacro
{
while (count(self::$tasks) > 0) {

Check failure on line 57 in src/vennv/vapm/simultaneous/MacroTask.php

View workflow job for this annotation

GitHub Actions / Jobs (8.2)

Method vennv\vapm\simultaneous\MacroTask::getTask() should return vennv\vapm\simultaneous\SampleMacro|null but return statement is missing.

Check failure on line 57 in src/vennv/vapm/simultaneous/MacroTask.php

View workflow job for this annotation

GitHub Actions / Jobs (8.2)

Parameter #1 $value of function count expects array|Countable, SplQueue|null given.
$task = self::$tasks->dequeue();

Check failure on line 58 in src/vennv/vapm/simultaneous/MacroTask.php

View workflow job for this annotation

GitHub Actions / Jobs (8.2)

Cannot call method dequeue() on SplQueue|null.
if ($task->getId() === $id) return $task;

Check failure on line 59 in src/vennv/vapm/simultaneous/MacroTask.php

View workflow job for this annotation

GitHub Actions / Jobs (8.2)

Cannot call method getId() on mixed.

Check failure on line 59 in src/vennv/vapm/simultaneous/MacroTask.php

View workflow job for this annotation

GitHub Actions / Jobs (8.2)

Method vennv\vapm\simultaneous\MacroTask::getTask() should return vennv\vapm\simultaneous\SampleMacro|null but returns mixed.
self::$tasks->enqueue($task);
}
return null;
}

/**
Expand All @@ -63,16 +69,17 @@ public static function getTasks(): SplQueue
return self::$tasks;
}

/**
* @throws Throwable
*/
public static function run(): void
{
while (self::$tasks->count() > 0) {
$promise = self::$tasks->dequeue();
$promise->useCallbacks();
$promise->setTimeEnd(microtime(true));
EventLoop::addReturn($promise);
$task = self::$tasks->dequeue();
if ($task->checkTimeOut()) {
$task->run();
if ($task->isRepeat()) {
$task->resetTimeOut();
self::$tasks->enqueue($task);
}
}
}
}

Expand Down

0 comments on commit 703d0a8

Please sign in to comment.