Skip to content

Commit

Permalink
Absorb pocketmine/log-pthreads into PM core
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
dktapps committed May 20, 2023
1 parent 9509d7e commit 097feba
Show file tree
Hide file tree
Showing 10 changed files with 139 additions and 56 deletions.
1 change: 0 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
48 changes: 1 addition & 47 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions src/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
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;
Expand Down Expand Up @@ -417,7 +418,7 @@ public function getLoader() : \DynamicClassLoader{
return $this->autoloader;
}

public function getLogger() : \AttachableThreadSafeLogger{
public function getLogger() : AttachableThreadSafeLogger{
return $this->logger;
}

Expand Down Expand Up @@ -760,7 +761,7 @@ public static function getInstance() : Server{

public function __construct(
private \DynamicClassLoader $autoloader,
private \AttachableThreadSafeLogger $logger,
private AttachableThreadSafeLogger $logger,
string $dataPath,
string $pluginPath
){
Expand Down
3 changes: 2 additions & 1 deletion src/network/mcpe/raklib/RakLibServer.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
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;
Expand Down Expand Up @@ -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,
Expand Down
3 changes: 2 additions & 1 deletion src/scheduler/AsyncPool.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
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;
Expand Down Expand Up @@ -70,7 +71,7 @@ public function __construct(
protected int $size,
private int $workerMemoryLimit,
private \ClassLoader $classLoader,
private \ThreadSafeLogger $logger,
private ThreadSafeLogger $logger,
private SleeperHandler $eventLoop
){}

Expand Down
5 changes: 3 additions & 2 deletions src/scheduler/AsyncWorker.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

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;
Expand All @@ -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
Expand All @@ -58,7 +59,7 @@ protected function onRun() : void{
}
}

public function getLogger() : \ThreadSafeLogger{
public function getLogger() : ThreadSafeLogger{
return $this->logger;
}

Expand Down
64 changes: 64 additions & 0 deletions src/thread/log/AttachableThreadSafeLogger.php
Original file line number Diff line number Diff line change
@@ -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 changes: 30 additions & 0 deletions src/thread/log/ThreadSafeLogger.php
Original file line number Diff line number Diff line change
@@ -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 changes: 30 additions & 0 deletions src/thread/log/ThreadSafeLoggerAttachment.php
Original file line number Diff line number Diff line change
@@ -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;
}
6 changes: 4 additions & 2 deletions src/utils/MainLogger.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@

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;
Expand Down Expand Up @@ -195,7 +197,7 @@ protected function send(string $message, string $level, string $prefix, string $
$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);
Expand Down

0 comments on commit 097feba

Please sign in to comment.