Updated config format.

This commit is contained in:
Abel Hoogeveen 2020-02-13 14:06:23 +01:00
parent 974a381b5a
commit ab198e9ef1
No known key found for this signature in database
GPG Key ID: 96C2234920BF4292
5 changed files with 40 additions and 11 deletions

View File

@ -42,12 +42,30 @@ return array(
'type' => 'ArrayTaskStorage', 'type' => 'ArrayTaskStorage',
// For ArrayTaskStorage, first parameter is the file location of the array storage // For ArrayTaskStorage, first parameter is the file location of the array storage
'parameters' => [dirname(__FILE__) . DS . 'storage.php'] 'parameters' => [
'filename' => dirname(__FILE__) . DS . 'storage.php'
],
// For RedisTaskStorage, parameters are connection properties
#'parameters' => [
# // Type can be 'tcp' or 'unix'
# 'socket_type' => 'tcp',
# // If socket_type == 'unix', set the socket here
# 'socket' => null,
# // If socket_type == 'tcp', set the host here
# 'host' => 'localhost',
#
# 'password' => null,
# 'port' => 6379,
# 'timeout' => 0
#]
], ],
'Executor' => [ 'Executor' => [
'type' => 'ShellExecutor', 'type' => 'ShellExecutor',
// For ShellExecutor, first parameter is the file location of the worker script // For ShellExecutor, first parameter is the file location of the worker script
'parameters' => [dirname(__FILE__) . DS . 'bin' . DS . 'worker'] 'parameters' => [
'workerFile' => dirname(__FILE__) . DS . 'bin' . DS . 'worker'
]
] ]
); );

View File

@ -51,11 +51,14 @@ class ShellExecutor implements Executor
/** /**
* ShellExecutor constructor. * ShellExecutor constructor.
* *
* @param string $workerFile The worker script that shall run individual tasks * @param array $parameters
* @throws TasksException * @throws TasksException
*/ */
public function __construct(string $workerFile) public function __construct(array $parameters)
{ {
// Fetch workerFile
$workerFile = $parameters['workerFile'];
// First determine the PHP binary // First determine the PHP binary
$this->binary = PHP_BINDIR . DS . 'php'; $this->binary = PHP_BINDIR . DS . 'php';

View File

@ -39,6 +39,14 @@ namespace FuzeWorks\Async;
interface TaskStorage interface TaskStorage
{ {
/**
* TaskStorage constructor.
*
* @throws TasksException
* @param array $parameters from config file
*/
public function __construct(array $parameters);
/** /**
* Add a task to the TaskStorage. * Add a task to the TaskStorage.
* *

View File

@ -60,13 +60,13 @@ class ArrayTaskStorage implements TaskStorage
protected $tasks = []; protected $tasks = [];
/** /**
* ArrayTaskStorage constructor. * @inheritDoc
*
* @param string $fileName Name of the Storage file
* @throws TasksException
*/ */
public function __construct(string $fileName) public function __construct(array $parameters)
{ {
// Load the filename for this taskStorage
$fileName = $parameters['filename'];
if (!file_exists($fileName)) if (!file_exists($fileName))
throw new TasksException("Could not construct ArrayTaskStorage. Storage file '$fileName' doesn't exist."); throw new TasksException("Could not construct ArrayTaskStorage. Storage file '$fileName' doesn't exist.");

View File

@ -116,7 +116,7 @@ class Tasks implements iLibrary
if (!class_exists($class, true)) if (!class_exists($class, true))
throw new TasksException("Could not get TaskStorage. Type of '$class' not found."); throw new TasksException("Could not get TaskStorage. Type of '$class' not found.");
$object = new $class(...$parameters); $object = new $class($parameters);
if (!$object instanceof TaskStorage) if (!$object instanceof TaskStorage)
throw new TasksException("Could not get TaskStorage. Type '$class' is not instanceof TaskStorage."); throw new TasksException("Could not get TaskStorage. Type '$class' is not instanceof TaskStorage.");
@ -137,7 +137,7 @@ class Tasks implements iLibrary
if (!class_exists($class, true)) if (!class_exists($class, true))
throw new TasksException("Could not get Executor. Type of '$class' not found."); throw new TasksException("Could not get Executor. Type of '$class' not found.");
$object = new $class(...$parameters); $object = new $class($parameters);
if (!$object instanceof Executor) if (!$object instanceof Executor)
throw new TasksException("Could not get Executor. Type '$class' is not instanceof Executor."); throw new TasksException("Could not get Executor. Type '$class' is not instanceof Executor.");