mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 09:56:06 +00:00
AsyncTask: TLS now supports storing multiple values (now requires a key/value pair)
This commit is contained in:
@ -28,6 +28,9 @@ use pocketmine\network\mcpe\protocol\FullChunkDataPacket;
|
||||
use pocketmine\scheduler\AsyncTask;
|
||||
|
||||
class ChunkRequestTask extends AsyncTask{
|
||||
private const TLS_KEY_PROMISE = "promise";
|
||||
private const TLS_KEY_ERROR_HOOK = "errorHook";
|
||||
|
||||
/** @var string */
|
||||
protected $chunk;
|
||||
/** @var int */
|
||||
@ -44,7 +47,8 @@ class ChunkRequestTask extends AsyncTask{
|
||||
$this->chunkX = $chunkX;
|
||||
$this->chunkZ = $chunkZ;
|
||||
|
||||
$this->storeLocal(["promise" => $promise, "errorHook" => $onError]);
|
||||
$this->storeLocal(self::TLS_KEY_PROMISE, $promise);
|
||||
$this->storeLocal(self::TLS_KEY_ERROR_HOOK, $onError);
|
||||
}
|
||||
|
||||
public function onRun() : void{
|
||||
@ -60,7 +64,8 @@ class ChunkRequestTask extends AsyncTask{
|
||||
}
|
||||
|
||||
public function onError() : void{
|
||||
$hook = $this->fetchLocal()["errorHook"];
|
||||
/** @var \Closure $hook */
|
||||
$hook = $this->fetchLocal(self::TLS_KEY_ERROR_HOOK);
|
||||
if($hook !== null){
|
||||
$hook();
|
||||
}
|
||||
@ -68,7 +73,7 @@ class ChunkRequestTask extends AsyncTask{
|
||||
|
||||
public function onCompletion() : void{
|
||||
/** @var CompressBatchPromise $promise */
|
||||
$promise = $this->fetchLocal()["promise"];
|
||||
$promise = $this->fetchLocal(self::TLS_KEY_PROMISE);
|
||||
$promise->resolve($this->getResult());
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,8 @@ use pocketmine\scheduler\AsyncTask;
|
||||
|
||||
class CompressBatchTask extends AsyncTask{
|
||||
|
||||
private const TLS_KEY_PROMISE = "promise";
|
||||
|
||||
private $level;
|
||||
private $data;
|
||||
|
||||
@ -38,7 +40,7 @@ class CompressBatchTask extends AsyncTask{
|
||||
public function __construct(string $data, int $compressionLevel, CompressBatchPromise $promise){
|
||||
$this->data = $data;
|
||||
$this->level = $compressionLevel;
|
||||
$this->storeLocal($promise);
|
||||
$this->storeLocal(self::TLS_KEY_PROMISE, $promise);
|
||||
}
|
||||
|
||||
public function onRun() : void{
|
||||
@ -47,7 +49,7 @@ class CompressBatchTask extends AsyncTask{
|
||||
|
||||
public function onCompletion() : void{
|
||||
/** @var CompressBatchPromise $promise */
|
||||
$promise = $this->fetchLocal();
|
||||
$promise = $this->fetchLocal(self::TLS_KEY_PROMISE);
|
||||
$promise->resolve($this->getResult());
|
||||
}
|
||||
}
|
||||
|
@ -58,6 +58,7 @@ use const OPENSSL_ALGO_SHA384;
|
||||
use const STR_PAD_LEFT;
|
||||
|
||||
class ProcessLoginTask extends AsyncTask{
|
||||
private const TLS_KEY_SESSION = "session";
|
||||
|
||||
public const MOJANG_ROOT_PUBLIC_KEY = "MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE8ELkixyLcwlZryUQcu1TvPOmI2B7vX83ndnWRUaXm74wFfa5f/lwQNTfrLVHa2PmenpGI6JhIMUJaWZrjmMj90NoKNFSNBuKdm8rYiXsfaz3K36x/1U26HpG0ZxK/V1V";
|
||||
|
||||
@ -100,7 +101,7 @@ class ProcessLoginTask extends AsyncTask{
|
||||
private $handshakeJwt = null;
|
||||
|
||||
public function __construct(NetworkSession $session, LoginPacket $packet, bool $authRequired, bool $useEncryption = true){
|
||||
$this->storeLocal($session);
|
||||
$this->storeLocal(self::TLS_KEY_SESSION, $session);
|
||||
$this->packet = $packet;
|
||||
$this->authRequired = $authRequired;
|
||||
$this->useEncryption = $useEncryption;
|
||||
@ -243,7 +244,7 @@ class ProcessLoginTask extends AsyncTask{
|
||||
|
||||
public function onCompletion() : void{
|
||||
/** @var NetworkSession $session */
|
||||
$session = $this->fetchLocal();
|
||||
$session = $this->fetchLocal(self::TLS_KEY_SESSION);
|
||||
if(!$session->isConnected()){
|
||||
$this->worker->getLogger()->error("Player " . $session->getDisplayName() . " was disconnected before their login could be verified");
|
||||
}elseif($session->setAuthenticationStatus($this->authenticated, $this->authRequired, $this->error)){
|
||||
|
Reference in New Issue
Block a user