Timings v2

TODO: Add #isStopping to FullServerTickHandler#stopTiming in patch 191
expose isRunning
This commit is contained in:
Aikar
2016-02-29 18:48:17 -06:00
parent 30e04bfa2f
commit d4d8262f6e
32 changed files with 3030 additions and 400 deletions
@@ -16,7 +16,6 @@ import org.bukkit.command.defaults.BukkitCommand;
import org.bukkit.command.defaults.HelpCommand;
import org.bukkit.command.defaults.PluginsCommand;
import org.bukkit.command.defaults.ReloadCommand;
import org.bukkit.command.defaults.TimingsCommand;
import org.bukkit.command.defaults.VersionCommand;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
@@ -36,7 +35,7 @@ public class SimpleCommandMap implements CommandMap {
register("bukkit", new VersionCommand("version"));
register("bukkit", new ReloadCommand("reload"));
//register("bukkit", new PluginsCommand("plugins")); // Paper
register("bukkit", new TimingsCommand("timings"));
register("bukkit", new co.aikar.timings.TimingsCommand("timings")); // Paper
}
public void setFallbackCommands() {
@@ -68,6 +67,7 @@ public class SimpleCommandMap implements CommandMap {
*/
@Override
public boolean register(@NotNull String label, @NotNull String fallbackPrefix, @NotNull Command command) {
command.timings = co.aikar.timings.TimingsManager.getCommandTiming(fallbackPrefix, command); // Paper
label = label.toLowerCase(Locale.ROOT).trim();
fallbackPrefix = fallbackPrefix.toLowerCase(Locale.ROOT).trim();
boolean registered = register(label, command, false, fallbackPrefix);
@@ -144,16 +144,22 @@ public class SimpleCommandMap implements CommandMap {
return false;
}
// Paper start - Plugins do weird things to workaround normal registration
if (target.timings == null) {
target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target);
}
// Paper end
try {
target.timings.startTiming(); // Spigot
try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources
// Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false)
target.execute(sender, sentCommandLabel, Arrays.copyOfRange(args, 1, args.length));
target.timings.stopTiming(); // Spigot
} // target.timings.stopTiming(); // Spigot // Paper
} catch (CommandException ex) {
target.timings.stopTiming(); // Spigot
//target.timings.stopTiming(); // Spigot // Paper
throw ex;
} catch (Throwable ex) {
target.timings.stopTiming(); // Spigot
//target.timings.stopTiming(); // Spigot // Paper
throw new CommandException("Unhandled exception executing '" + commandLine + "' in " + target, ex);
}