mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-03 18:42:37 +00:00
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:
parent
9509d7e04d
commit
097feba4d5
@ -45,7 +45,6 @@
|
||||
"pocketmine/errorhandler": "^0.6.0",
|
||||
"pocketmine/locale-data": "~2.19.0",
|
||||
"pocketmine/log": "^0.4.0",
|
||||
"pocketmine/log-pthreads": "dev-stable",
|
||||
"pocketmine/math": "^0.4.0",
|
||||
"pocketmine/nbt": "^0.3.2",
|
||||
"pocketmine/raklib": "^0.15.0",
|
||||
|
48
composer.lock
generated
48
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "507c2a45350440a7717ed089190fe4f0",
|
||||
"content-hash": "0dc836612512d87a694945ffb87a4096",
|
||||
"packages": [
|
||||
{
|
||||
"name": "adhocore/json-comment",
|
||||
@ -651,51 +651,6 @@
|
||||
},
|
||||
"time": "2021-06-18T19:08:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pocketmine/log-pthreads",
|
||||
"version": "dev-stable",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/pmmp/LogPthreads.git",
|
||||
"reference": "bb3b5395042d12ec0d7ad5c855fd86eaf12869d3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/bb3b5395042d12ec0d7ad5c855fd86eaf12869d3",
|
||||
"reference": "bb3b5395042d12ec0d7ad5c855fd86eaf12869d3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pmmpthread": "^6.0",
|
||||
"php": "^8.1",
|
||||
"pocketmine/log": "^0.4.0"
|
||||
},
|
||||
"conflict": {
|
||||
"pocketmine/spl": "<0.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "1.10.3",
|
||||
"phpstan/phpstan-strict-rules": "^1.0"
|
||||
},
|
||||
"default-branch": true,
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"./src"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0"
|
||||
],
|
||||
"description": "Logging components specialized for pthreads used by PocketMine-MP and related projects",
|
||||
"support": {
|
||||
"issues": "https://github.com/pmmp/LogPthreads/issues",
|
||||
"source": "https://github.com/pmmp/LogPthreads/tree/stable"
|
||||
},
|
||||
"time": "2023-05-19T23:38:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pocketmine/math",
|
||||
"version": "0.4.3",
|
||||
@ -3298,7 +3253,6 @@
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": {
|
||||
"pocketmine/classloader": 20,
|
||||
"pocketmine/log-pthreads": 20,
|
||||
"pocketmine/snooze": 20
|
||||
},
|
||||
"prefer-stable": false,
|
||||
|
@ -92,6 +92,7 @@ use pocketmine\resourcepacks\ResourcePackManager;
|
||||
use pocketmine\scheduler\AsyncPool;
|
||||
use pocketmine\snooze\SleeperHandler;
|
||||
use pocketmine\stats\SendUsageTask;
|
||||
use pocketmine\thread\log\AttachableThreadSafeLogger;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
use pocketmine\updater\UpdateChecker;
|
||||
@ -417,7 +418,7 @@ class Server{
|
||||
return $this->autoloader;
|
||||
}
|
||||
|
||||
public function getLogger() : \AttachableThreadSafeLogger{
|
||||
public function getLogger() : AttachableThreadSafeLogger{
|
||||
return $this->logger;
|
||||
}
|
||||
|
||||
@ -760,7 +761,7 @@ class Server{
|
||||
|
||||
public function __construct(
|
||||
private \DynamicClassLoader $autoloader,
|
||||
private \AttachableThreadSafeLogger $logger,
|
||||
private AttachableThreadSafeLogger $logger,
|
||||
string $dataPath,
|
||||
string $pluginPath
|
||||
){
|
||||
|
@ -26,6 +26,7 @@ namespace pocketmine\network\mcpe\raklib;
|
||||
use pmmp\thread\Thread as NativeThread;
|
||||
use pmmp\thread\ThreadSafeArray;
|
||||
use pocketmine\snooze\SleeperNotifier;
|
||||
use pocketmine\thread\log\ThreadSafeLogger;
|
||||
use pocketmine\thread\NonThreadSafeValue;
|
||||
use pocketmine\thread\Thread;
|
||||
use raklib\generic\SocketException;
|
||||
@ -55,7 +56,7 @@ class RakLibServer extends Thread{
|
||||
* @phpstan-param ThreadSafeArray<int, string> $threadToMainBuffer
|
||||
*/
|
||||
public function __construct(
|
||||
protected \ThreadSafeLogger $logger,
|
||||
protected ThreadSafeLogger $logger,
|
||||
protected ThreadSafeArray $mainToThreadBuffer,
|
||||
protected ThreadSafeArray $threadToMainBuffer,
|
||||
InternetAddress $address,
|
||||
|
@ -27,6 +27,7 @@ use pmmp\thread\Thread as NativeThread;
|
||||
use pmmp\thread\ThreadSafeArray;
|
||||
use pocketmine\snooze\SleeperHandler;
|
||||
use pocketmine\snooze\SleeperNotifier;
|
||||
use pocketmine\thread\log\ThreadSafeLogger;
|
||||
use pocketmine\utils\Utils;
|
||||
use function array_keys;
|
||||
use function array_map;
|
||||
@ -70,7 +71,7 @@ class AsyncPool{
|
||||
protected int $size,
|
||||
private int $workerMemoryLimit,
|
||||
private \ClassLoader $classLoader,
|
||||
private \ThreadSafeLogger $logger,
|
||||
private ThreadSafeLogger $logger,
|
||||
private SleeperHandler $eventLoop
|
||||
){}
|
||||
|
||||
|
@ -25,6 +25,7 @@ namespace pocketmine\scheduler;
|
||||
|
||||
use pmmp\thread\Thread as NativeThread;
|
||||
use pocketmine\snooze\SleeperNotifier;
|
||||
use pocketmine\thread\log\ThreadSafeLogger;
|
||||
use pocketmine\thread\Worker;
|
||||
use function gc_enable;
|
||||
use function ini_set;
|
||||
@ -34,7 +35,7 @@ class AsyncWorker extends Worker{
|
||||
private static array $store = [];
|
||||
|
||||
public function __construct(
|
||||
private \ThreadSafeLogger $logger,
|
||||
private ThreadSafeLogger $logger,
|
||||
private int $id,
|
||||
private int $memoryLimit,
|
||||
private SleeperNotifier $notifier
|
||||
@ -58,7 +59,7 @@ class AsyncWorker extends Worker{
|
||||
}
|
||||
}
|
||||
|
||||
public function getLogger() : \ThreadSafeLogger{
|
||||
public function getLogger() : ThreadSafeLogger{
|
||||
return $this->logger;
|
||||
}
|
||||
|
||||
|
64
src/thread/log/AttachableThreadSafeLogger.php
Normal file
64
src/thread/log/AttachableThreadSafeLogger.php
Normal 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;
|
||||
}
|
||||
}
|
30
src/thread/log/ThreadSafeLogger.php
Normal file
30
src/thread/log/ThreadSafeLogger.php
Normal 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{
|
||||
|
||||
}
|
30
src/thread/log/ThreadSafeLoggerAttachment.php
Normal file
30
src/thread/log/ThreadSafeLoggerAttachment.php
Normal 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;
|
||||
}
|
@ -25,13 +25,15 @@ namespace pocketmine\utils;
|
||||
|
||||
use LogLevel;
|
||||
use pmmp\thread\Thread as NativeThread;
|
||||
use pocketmine\thread\log\AttachableThreadSafeLogger;
|
||||
use pocketmine\thread\log\ThreadSafeLoggerAttachment;
|
||||
use pocketmine\thread\Thread;
|
||||
use pocketmine\thread\Worker;
|
||||
use function implode;
|
||||
use function sprintf;
|
||||
use const PHP_EOL;
|
||||
|
||||
class MainLogger extends \AttachableThreadSafeLogger implements \BufferedLogger{
|
||||
class MainLogger extends AttachableThreadSafeLogger implements \BufferedLogger{
|
||||
protected bool $logDebug;
|
||||
|
||||
private string $format = TextFormat::AQUA . "[%s] " . TextFormat::RESET . "%s[%s/%s]: %s" . TextFormat::RESET;
|
||||
@ -195,7 +197,7 @@ class MainLogger extends \AttachableThreadSafeLogger implements \BufferedLogger{
|
||||
$this->logWriterThread->write($time->format("Y-m-d") . " " . TextFormat::clean($message) . PHP_EOL);
|
||||
|
||||
/**
|
||||
* @var \ThreadSafeLoggerAttachment $attachment
|
||||
* @var ThreadSafeLoggerAttachment $attachment
|
||||
*/
|
||||
foreach($this->attachments as $attachment){
|
||||
$attachment->log($level, $message);
|
||||
|
Loading…
x
Reference in New Issue
Block a user