29
29
use pocketmine \utils \ObjectSet ;
30
30
use pocketmine \utils \Utils ;
31
31
use function array_merge ;
32
+ use function array_push ;
32
33
use function hrtime ;
33
34
use function implode ;
34
35
use function spl_object_id ;
35
36
37
+ /**
38
+ * @phpstan-type CollectPromise Promise<list<string>>
39
+ */
36
40
class TimingsHandler{
37
41
private const FORMAT_VERSION = 3 ; //thread timings collection
38
42
@@ -43,7 +47,7 @@ class TimingsHandler{
43
47
private static ?ObjectSet $ toggleCallbacks = null ;
44
48
/** @phpstan-var ObjectSet<\Closure() : void> */
45
49
private static ?ObjectSet $ resetCallbacks = null ;
46
- /** @phpstan-var ObjectSet<\Closure() : Promise< list<string> >> */
50
+ /** @phpstan-var ObjectSet<\Closure() : list<CollectPromise >> */
47
51
private static ?ObjectSet $ collectCallbacks = null ;
48
52
49
53
/**
@@ -57,7 +61,7 @@ public static function getToggleCallbacks() : ObjectSet{ return self::$toggleCal
57
61
public static function getResetCallbacks () : ObjectSet { return self ::$ resetCallbacks ??= new ObjectSet (); }
58
62
59
63
/**
60
- * @phpstan-return ObjectSet<\Closure() : Promise< list<string> >>
64
+ * @phpstan-return ObjectSet<\Closure() : list<CollectPromise >>
61
65
*/
62
66
public static function getCollectCallbacks () : ?ObjectSet { return self ::$ collectCallbacks ??= new ObjectSet (); }
63
67
@@ -151,7 +155,8 @@ public static function requestPrintTimings() : Promise{
151
155
$ otherThreadRecordPromises = [];
152
156
if (self ::$ collectCallbacks !== null ){
153
157
foreach (self ::$ collectCallbacks as $ callback ){
154
- $ otherThreadRecordPromises [] = $ callback ();
158
+ $ callbackPromises = $ callback ();
159
+ array_push ($ otherThreadRecordPromises , ...$ callbackPromises );
155
160
}
156
161
}
157
162
0 commit comments