<?php
/*
* This file is part of Chevere.
*
* (c) Rodolfo Berrios <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chevere\Workflow;
use Amp\Cancellation;
use Amp\Parallel\Worker\Task;
use Amp\Sync\Channel;
use InvalidArgumentException;
/**
* @template-implements Task<mixed, never, never>
*/
final class CallableTask implements Task
{
private string $callable;
/**
* @var array<mixed>
*/
private array $arguments;
public function __construct(
callable $callable,
mixed ...$arguments
) {
if (! is_string($callable)) {
throw new InvalidArgumentException('Argument $callable must be a callable string');
}
$this->callable = $callable;
$this->arguments = $arguments;
}
public function run(Channel $channel, Cancellation $cancellation): mixed
{
// @phpstan-ignore-next-line
return ($this->callable)(...$this->arguments);
}
}
|