mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-20 16:00:20 +00:00
ServerScheduler::scheduleAsyncTask() returns the worker used (#1312)
This commit is contained in:
parent
7475aa3a18
commit
9902d29734
@ -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){
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user