Absorb pocketmine/log-pthreads into PM core

this was previously part of the abandoned package pocketmine/spl. It had to be separated in the PM3 days, because RakLib depended on it.

Since RakLib 0.13, RakLib stopped being dependent on or aware of pthreads, so it no longer depends on any thread-related packages.
It's also possible to absorb pocketmine/snooze and pocketmine/classloader back into the core with this in mind.
This commit is contained in:
Dylan K. Taylor
2023-05-20 16:57:24 +01:00
parent 9509d7e04d
commit 097feba4d5
10 changed files with 139 additions and 56 deletions

View File

@ -0,0 +1,64 @@
<?php
/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/
declare(strict_types=1);
namespace pocketmine\thread\log;
use pmmp\thread\ThreadSafeArray;
abstract class AttachableThreadSafeLogger extends ThreadSafeLogger{
/**
* @var ThreadSafeArray|ThreadSafeLoggerAttachment[]
* @phpstan-var ThreadSafeArray<int, ThreadSafeLoggerAttachment>
*/
protected ThreadSafeArray $attachments;
public function __construct(){
$this->attachments = new ThreadSafeArray();
}
public function addAttachment(ThreadSafeLoggerAttachment $attachment) : void{
$this->attachments[] = $attachment;
}
public function removeAttachment(ThreadSafeLoggerAttachment $attachment) : void{
foreach($this->attachments as $i => $a){
if($attachment === $a){
unset($this->attachments[$i]);
}
}
}
public function removeAttachments() : void{
foreach($this->attachments as $i => $a){
unset($this->attachments[$i]);
}
}
/**
* @return ThreadSafeLoggerAttachment[]
*/
public function getAttachments() : array{
return (array) $this->attachments;
}
}

View File

@ -0,0 +1,30 @@
<?php
/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/
declare(strict_types=1);
namespace pocketmine\thread\log;
use pmmp\thread\ThreadSafe;
abstract class ThreadSafeLogger extends ThreadSafe implements \Logger{
}

View File

@ -0,0 +1,30 @@
<?php
/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/
declare(strict_types=1);
namespace pocketmine\thread\log;
use pmmp\thread\ThreadSafe;
abstract class ThreadSafeLoggerAttachment extends ThreadSafe{
abstract public function log(string $level, string $message) : void;
}