4
0
mirror of https://github.com/AzuraCast/AzuraCast.git synced 2024-06-21 08:27:05 +00:00
AzuraCast/src/Event/GetSyncTasks.php
2021-07-19 00:53:45 -05:00

54 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Event;
use App\Sync\Task\AbstractTask;
use Generator;
class GetSyncTasks
{
public const SYNC_NOWPLAYING = 'nowplaying';
public const SYNC_SHORT = 'short';
public const SYNC_MEDIUM = 'medium';
public const SYNC_LONG = 'long';
protected array $tasks = [];
public function __construct(
protected string $type
) {
}
public function getType(): string
{
return $this->type;
}
/**
* @return Generator|AbstractTask[]
*/
public function getTasks(): Generator
{
yield from $this->tasks;
}
public function addTask(AbstractTask $task, ?string $key = null): void
{
if (null === $key) {
$taskClassParts = explode("\\", get_class($task));
$key = array_pop($taskClassParts);
}
$this->tasks[$key] = $task;
}
public function removeTask(string $key): void
{
if (isset($this->tasks[$key])) {
unset($this->tasks[$key]);
}
}
}