Skip to content

Commit 097feba

Browse files
committed
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.
1 parent 9509d7e commit 097feba

10 files changed

+139
-56
lines changed

composer.json

-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
"pocketmine/errorhandler": "^0.6.0",
4646
"pocketmine/locale-data": "~2.19.0",
4747
"pocketmine/log": "^0.4.0",
48-
"pocketmine/log-pthreads": "dev-stable",
4948
"pocketmine/math": "^0.4.0",
5049
"pocketmine/nbt": "^0.3.2",
5150
"pocketmine/raklib": "^0.15.0",

composer.lock

+1-47
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Server.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
use pocketmine\scheduler\AsyncPool;
9393
use pocketmine\snooze\SleeperHandler;
9494
use pocketmine\stats\SendUsageTask;
95+
use pocketmine\thread\log\AttachableThreadSafeLogger;
9596
use pocketmine\timings\Timings;
9697
use pocketmine\timings\TimingsHandler;
9798
use pocketmine\updater\UpdateChecker;
@@ -417,7 +418,7 @@ public function getLoader() : \DynamicClassLoader{
417418
return $this->autoloader;
418419
}
419420

420-
public function getLogger() : \AttachableThreadSafeLogger{
421+
public function getLogger() : AttachableThreadSafeLogger{
421422
return $this->logger;
422423
}
423424

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

761762
public function __construct(
762763
private \DynamicClassLoader $autoloader,
763-
private \AttachableThreadSafeLogger $logger,
764+
private AttachableThreadSafeLogger $logger,
764765
string $dataPath,
765766
string $pluginPath
766767
){

src/network/mcpe/raklib/RakLibServer.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use pmmp\thread\Thread as NativeThread;
2727
use pmmp\thread\ThreadSafeArray;
2828
use pocketmine\snooze\SleeperNotifier;
29+
use pocketmine\thread\log\ThreadSafeLogger;
2930
use pocketmine\thread\NonThreadSafeValue;
3031
use pocketmine\thread\Thread;
3132
use raklib\generic\SocketException;
@@ -55,7 +56,7 @@ class RakLibServer extends Thread{
5556
* @phpstan-param ThreadSafeArray<int, string> $threadToMainBuffer
5657
*/
5758
public function __construct(
58-
protected \ThreadSafeLogger $logger,
59+
protected ThreadSafeLogger $logger,
5960
protected ThreadSafeArray $mainToThreadBuffer,
6061
protected ThreadSafeArray $threadToMainBuffer,
6162
InternetAddress $address,

src/scheduler/AsyncPool.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use pmmp\thread\ThreadSafeArray;
2828
use pocketmine\snooze\SleeperHandler;
2929
use pocketmine\snooze\SleeperNotifier;
30+
use pocketmine\thread\log\ThreadSafeLogger;
3031
use pocketmine\utils\Utils;
3132
use function array_keys;
3233
use function array_map;
@@ -70,7 +71,7 @@ public function __construct(
7071
protected int $size,
7172
private int $workerMemoryLimit,
7273
private \ClassLoader $classLoader,
73-
private \ThreadSafeLogger $logger,
74+
private ThreadSafeLogger $logger,
7475
private SleeperHandler $eventLoop
7576
){}
7677

src/scheduler/AsyncWorker.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
use pmmp\thread\Thread as NativeThread;
2727
use pocketmine\snooze\SleeperNotifier;
28+
use pocketmine\thread\log\ThreadSafeLogger;
2829
use pocketmine\thread\Worker;
2930
use function gc_enable;
3031
use function ini_set;
@@ -34,7 +35,7 @@ class AsyncWorker extends Worker{
3435
private static array $store = [];
3536

3637
public function __construct(
37-
private \ThreadSafeLogger $logger,
38+
private ThreadSafeLogger $logger,
3839
private int $id,
3940
private int $memoryLimit,
4041
private SleeperNotifier $notifier
@@ -58,7 +59,7 @@ protected function onRun() : void{
5859
}
5960
}
6061

61-
public function getLogger() : \ThreadSafeLogger{
62+
public function getLogger() : ThreadSafeLogger{
6263
return $this->logger;
6364
}
6465

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
/*
4+
*
5+
* ____ _ _ __ __ _ __ __ ____
6+
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
7+
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
8+
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
9+
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
10+
*
11+
* This program is free software: you can redistribute it and/or modify
12+
* it under the terms of the GNU Lesser General Public License as published by
13+
* the Free Software Foundation, either version 3 of the License, or
14+
* (at your option) any later version.
15+
*
16+
* @author PocketMine Team
17+
* @link http://www.pocketmine.net/
18+
*
19+
*
20+
*/
21+
22+
declare(strict_types=1);
23+
24+
namespace pocketmine\thread\log;
25+
26+
use pmmp\thread\ThreadSafeArray;
27+
28+
abstract class AttachableThreadSafeLogger extends ThreadSafeLogger{
29+
30+
/**
31+
* @var ThreadSafeArray|ThreadSafeLoggerAttachment[]
32+
* @phpstan-var ThreadSafeArray<int, ThreadSafeLoggerAttachment>
33+
*/
34+
protected ThreadSafeArray $attachments;
35+
36+
public function __construct(){
37+
$this->attachments = new ThreadSafeArray();
38+
}
39+
40+
public function addAttachment(ThreadSafeLoggerAttachment $attachment) : void{
41+
$this->attachments[] = $attachment;
42+
}
43+
44+
public function removeAttachment(ThreadSafeLoggerAttachment $attachment) : void{
45+
foreach($this->attachments as $i => $a){
46+
if($attachment === $a){
47+
unset($this->attachments[$i]);
48+
}
49+
}
50+
}
51+
52+
public function removeAttachments() : void{
53+
foreach($this->attachments as $i => $a){
54+
unset($this->attachments[$i]);
55+
}
56+
}
57+
58+
/**
59+
* @return ThreadSafeLoggerAttachment[]
60+
*/
61+
public function getAttachments() : array{
62+
return (array) $this->attachments;
63+
}
64+
}

src/thread/log/ThreadSafeLogger.php

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
/*
4+
*
5+
* ____ _ _ __ __ _ __ __ ____
6+
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
7+
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
8+
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
9+
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
10+
*
11+
* This program is free software: you can redistribute it and/or modify
12+
* it under the terms of the GNU Lesser General Public License as published by
13+
* the Free Software Foundation, either version 3 of the License, or
14+
* (at your option) any later version.
15+
*
16+
* @author PocketMine Team
17+
* @link http://www.pocketmine.net/
18+
*
19+
*
20+
*/
21+
22+
declare(strict_types=1);
23+
24+
namespace pocketmine\thread\log;
25+
26+
use pmmp\thread\ThreadSafe;
27+
28+
abstract class ThreadSafeLogger extends ThreadSafe implements \Logger{
29+
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
/*
4+
*
5+
* ____ _ _ __ __ _ __ __ ____
6+
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
7+
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
8+
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
9+
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
10+
*
11+
* This program is free software: you can redistribute it and/or modify
12+
* it under the terms of the GNU Lesser General Public License as published by
13+
* the Free Software Foundation, either version 3 of the License, or
14+
* (at your option) any later version.
15+
*
16+
* @author PocketMine Team
17+
* @link http://www.pocketmine.net/
18+
*
19+
*
20+
*/
21+
22+
declare(strict_types=1);
23+
24+
namespace pocketmine\thread\log;
25+
26+
use pmmp\thread\ThreadSafe;
27+
28+
abstract class ThreadSafeLoggerAttachment extends ThreadSafe{
29+
abstract public function log(string $level, string $message) : void;
30+
}

src/utils/MainLogger.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@
2525

2626
use LogLevel;
2727
use pmmp\thread\Thread as NativeThread;
28+
use pocketmine\thread\log\AttachableThreadSafeLogger;
29+
use pocketmine\thread\log\ThreadSafeLoggerAttachment;
2830
use pocketmine\thread\Thread;
2931
use pocketmine\thread\Worker;
3032
use function implode;
3133
use function sprintf;
3234
use const PHP_EOL;
3335

34-
class MainLogger extends \AttachableThreadSafeLogger implements \BufferedLogger{
36+
class MainLogger extends AttachableThreadSafeLogger implements \BufferedLogger{
3537
protected bool $logDebug;
3638

3739
private string $format = TextFormat::AQUA . "[%s] " . TextFormat::RESET . "%s[%s/%s]: %s" . TextFormat::RESET;
@@ -195,7 +197,7 @@ protected function send(string $message, string $level, string $prefix, string $
195197
$this->logWriterThread->write($time->format("Y-m-d") . " " . TextFormat::clean($message) . PHP_EOL);
196198

197199
/**
198-
* @var \ThreadSafeLoggerAttachment $attachment
200+
* @var ThreadSafeLoggerAttachment $attachment
199201
*/
200202
foreach($this->attachments as $attachment){
201203
$attachment->log($level, $message);

0 commit comments

Comments
 (0)