nextcloud-custom-apps-face-.../facerecognition/lib/BackgroundJob/FaceRecognitionBackgroundTask.php
2024-09-03 09:12:12 +05:00

93 lines
2.9 KiB
PHP

<?php
/**
* @copyright Copyright (c) 2017, Matias De lellis <mati86dl@gmail.com>
* @copyright Copyright (c) 2018, Branko Kokanovic <branko@kokanovic.org>
*
* @author Branko Kokanovic <branko@kokanovic.org>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\FaceRecognition\BackgroundJob;
use OCA\FaceRecognition\BackgroundJob\FaceRecognitionContext;
/**
* Interface that each face recognition background task should implement
*/
interface IFaceRecognitionBackgroundTask {
/**
* Returns task's description.
*
* @return string Description of what task do
*/
public function description();
/**
* Executes task.
*
* @param FaceRecognitionContext $context Face recognition context
* @return \Generator|bool Since we are yielding, return type is either Generator, or boolean (actual return).
* Return value specifies should we continue execution. True if we should continue, false if we should bail out.
*/
public function execute(FaceRecognitionContext $context);
}
/**
* Abstract implementation for background task, serves as a helper for common functions.
*/
abstract class FaceRecognitionBackgroundTask implements IFaceRecognitionBackgroundTask {
/** @var FaceRecognitionContext $context */
protected $context;
public function __construct() {
}
/**
* Sets context for a given task, so it can be accessed in task (without a need to dragging it around from execute() method).
* Currently public, because of tests (ideally it should be protected).
*
* @param FaceRecognitionContext $context Context
*
* @return void
*/
public function setContext(FaceRecognitionContext $context): void {
$this->context = $context;
}
/**
* Wrapper for info logging. It using this log call, it will indent log messages,
* so there is nice visual that those messages belongs to particular task.
*
* @return void
*/
protected function logInfo(string $message): void {
$this->context->logger->logInfo("\t" . $message);
}
/**
* Wrapper for debug logging. It using this log call, it will indent log messages,
* so there is nice visual that those messages belongs to particular task.
*
* @return void
*/
protected function logDebug(string $message): void {
if ($this->context->verbose) {
$this->context->logger->logDebug("\t" . $message);
}
}
}