From 9902d2973417ebd7036efc0b6758aca4b0a5a188 Mon Sep 17 00:00:00 2001 From: SOFe Date: Tue, 29 Aug 2017 17:29:24 +0800 Subject: [PATCH] ServerScheduler::scheduleAsyncTask() returns the worker used (#1312) --- src/pocketmine/scheduler/AsyncPool.php | 5 +++-- src/pocketmine/scheduler/ServerScheduler.php | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pocketmine/scheduler/AsyncPool.php b/src/pocketmine/scheduler/AsyncPool.php index 49e44bcdf..636e52b0c 100644 --- a/src/pocketmine/scheduler/AsyncPool.php +++ b/src/pocketmine/scheduler/AsyncPool.php @@ -92,9 +92,9 @@ class AsyncPool{ $this->taskWorkers[$task->getTaskId()] = $worker; } - public function submitTask(AsyncTask $task){ + public function submitTask(AsyncTask $task) : int{ if(isset($this->tasks[$task->getTaskId()]) or $task->isGarbage()){ - return; + return -1; } $selectedWorker = mt_rand(0, $this->size - 1); @@ -107,6 +107,7 @@ class AsyncPool{ } $this->submitTaskToWorker($task, $selectedWorker); + return $selectedWorker; } private function removeTask(AsyncTask $task, bool $force = false){ diff --git a/src/pocketmine/scheduler/ServerScheduler.php b/src/pocketmine/scheduler/ServerScheduler.php index 9bcaabf8a..15932a010 100644 --- a/src/pocketmine/scheduler/ServerScheduler.php +++ b/src/pocketmine/scheduler/ServerScheduler.php @@ -24,6 +24,7 @@ declare(strict_types=1); /** * Task scheduling related classes */ + namespace pocketmine\scheduler; use pocketmine\plugin\Plugin; @@ -75,16 +76,16 @@ class ServerScheduler{ * * @param AsyncTask $task * - * @return void + * @return int */ - public function scheduleAsyncTask(AsyncTask $task){ + public function scheduleAsyncTask(AsyncTask $task) : int{ if($task->getTaskId() !== null){ throw new \UnexpectedValueException("Attempt to schedule the same AsyncTask instance twice"); } $id = $this->nextId(); $task->setTaskId($id); $task->progressUpdates = new \Threaded; - $this->asyncPool->submitTask($task); + return $this->asyncPool->submitTask($task); } /**