ChunkCache: inline unnecessary function

This commit is contained in:
Dylan K. Taylor 2023-11-17 13:30:44 +00:00
parent bc07778434
commit 0f620fad94
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -136,32 +136,19 @@ class ChunkCache implements ChunkListener{
return $existing !== null; return $existing !== null;
} }
/**
* Restarts an async request for an unresolved chunk.
*
* @throws \InvalidArgumentException
*/
private function restartPendingRequest(int $chunkX, int $chunkZ) : void{
$chunkHash = World::chunkHash($chunkX, $chunkZ);
$existing = $this->caches[$chunkHash] ?? null;
if($existing === null || $existing->hasResult()){
throw new \InvalidArgumentException("Restart can only be applied to unresolved promises");
}
$existing->cancel();
unset($this->caches[$chunkHash]);
$this->request($chunkX, $chunkZ)->onResolve(...$existing->getResolveCallbacks());
}
/** /**
* @throws \InvalidArgumentException * @throws \InvalidArgumentException
*/ */
private function destroyOrRestart(int $chunkX, int $chunkZ) : void{ private function destroyOrRestart(int $chunkX, int $chunkZ) : void{
$cache = $this->caches[World::chunkHash($chunkX, $chunkZ)] ?? null; $chunkPosHash = World::chunkHash($chunkX, $chunkZ);
$cache = $this->caches[$chunkPosHash] ?? null;
if($cache !== null){ if($cache !== null){
if(!$cache->hasResult()){ if(!$cache->hasResult()){
//some requesters are waiting for this chunk, so their request needs to be fulfilled //some requesters are waiting for this chunk, so their request needs to be fulfilled
$this->restartPendingRequest($chunkX, $chunkZ); $cache->cancel();
unset($this->caches[$chunkPosHash]);
$this->request($chunkX, $chunkZ)->onResolve(...$cache->getResolveCallbacks());
}else{ }else{
//dump the cache, it'll be regenerated the next time it's requested //dump the cache, it'll be regenerated the next time it's requested
$this->destroy($chunkX, $chunkZ); $this->destroy($chunkX, $chunkZ);