More improvements to Timings, RCON now is no longer blocking!

Finally made timings accept "Callback style" reports, so plugins
can listen for when the report is done.

Added new Util interfaces, MessageCommandSender and BufferedCommandSender

This restores and improves using RCON to generate timings reports
This commit is contained in:
Aikar
2017-02-04 22:47:39 -05:00
parent adc43dff10
commit 8246be5c3d
2 changed files with 193 additions and 137 deletions

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Timings v2
diff --git a/pom.xml b/pom.xml
index 0e88ae2a7..31b8401aa 100644
index 8b96966d8..8d1e8680b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -0,0 +0,0 @@
@@ -493,7 +493,7 @@ index 81fc04ed3..bd3b16025 100644
private void z() {
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 87c07f2be..e18fb875f 100644
index daf2c0a67..3ba489d4f 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -0,0 +0,0 @@ public class ChunkProviderServer implements IChunkProvider {
@@ -555,7 +555,7 @@ index a97e7d3c2..4890023d7 100644
// return chunk; // CraftBukkit
}
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index cb83e4f56..4dab9e962 100644
index cb83e4f56..e6819139f 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -0,0 +0,0 @@ import java.io.PrintStream;
@@ -585,6 +585,28 @@ index cb83e4f56..4dab9e962 100644
}
public boolean aa() {
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
return remoteControlCommandListener.getMessages();
}
};
- processQueue.add(waitable);
+ // Paper start
+ if (s.toLowerCase().startsWith("timings") && s.toLowerCase().matches("timings (report|paste|get|merged|seperate)")) {
+ org.bukkit.command.BufferedCommandSender sender = new org.bukkit.command.BufferedCommandSender();
+ waitable = new Waitable<String>() {
+ @Override
+ protected String evaluate() {
+ return sender.getBuffer();
+ }
+ };
+ co.aikar.timings.Timings.generateReport(new co.aikar.timings.TimingsReportListener(sender, waitable));
+ } else {
+ processQueue.add(waitable);
+ }
+ // Paper end
try {
return waitable.get();
} catch (java.util.concurrent.ExecutionException e) {
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index e7b1ebbe3..05312c6ac 100644
--- a/src/main/java/net/minecraft/server/Entity.java