From 65f1371cf455c904e792047d580ebd808febf8c6 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Tue, 6 Aug 2013 19:44:38 +0200 Subject: [PATCH] Don't create a network marker unnecessarily. --- .../com/comphenix/protocol/async/AsyncMarker.java | 5 +++-- .../com/comphenix/protocol/events/NetworkMarker.java | 11 +++++++++++ .../com/comphenix/protocol/events/PacketEvent.java | 2 +- .../protocol/injector/PacketFilterManager.java | 2 +- .../protocol/injector/player/PlayerInjector.java | 4 ++-- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java index 73dcdc70..fc9eff82 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/async/AsyncMarker.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import com.comphenix.protocol.PacketStream; +import com.comphenix.protocol.events.NetworkMarker; import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.injector.PrioritizedListener; import com.comphenix.protocol.reflect.FieldAccessException; @@ -381,9 +382,9 @@ public class AsyncMarker implements Serializable, Comparable { void sendPacket(PacketEvent event) throws IOException { try { if (event.isServerPacket()) { - packetStream.sendServerPacket(event.getPlayer(), event.getPacket(), event.getNetworkMarker(), false); + packetStream.sendServerPacket(event.getPlayer(), event.getPacket(), NetworkMarker.getNetworkMarker(event), false); } else { - packetStream.recieveClientPacket(event.getPlayer(), event.getPacket(), event.getNetworkMarker(), false); + packetStream.recieveClientPacket(event.getPlayer(), event.getPacket(), NetworkMarker.getNetworkMarker(event), false); } transmitted = true; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/events/NetworkMarker.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/NetworkMarker.java index a0ac8f62..c1b08974 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/events/NetworkMarker.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/events/NetworkMarker.java @@ -189,4 +189,15 @@ public class NetworkMarker { } return null; } + + /** + * Retrieve the network marker of a particular event without creating it. + *

+ * This is an internal method that should not be used by API users. + * @param event - the event. + * @return The network marker. + */ + public static NetworkMarker getNetworkMarker(PacketEvent event) { + return event.networkMarker; + } } diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketEvent.java b/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketEvent.java index 8f0f1be7..f6b52b55 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketEvent.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/events/PacketEvent.java @@ -45,7 +45,7 @@ public class PacketEvent extends EventObject implements Cancellable { private boolean asynchronous; // Network input and output handlers - private NetworkMarker networkMarker; + NetworkMarker networkMarker; // Whether or not a packet event is read only private boolean readOnly; diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketFilterManager.java index 3a74b70f..c4d28b14 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketFilterManager.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/PacketFilterManager.java @@ -643,7 +643,7 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok sendingListeners.invokePacketSending( reporter, event, ListenerPriority.MONITOR); - marker = event.getNetworkMarker(); + marker = NetworkMarker.getNetworkMarker(event); } playerInjection.sendServerPacket(reciever, packet, marker, filters); } diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjector.java index 25df28f4..ceb124cf 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjector.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/player/PlayerInjector.java @@ -611,8 +611,8 @@ public abstract class PlayerInjector implements SocketInjector { // Right, remember to replace the packet again Object result = event.getPacket().getHandle(); - marker = event.getNetworkMarker(); - + marker = NetworkMarker.getNetworkMarker(event); + // See if we need to proxy the write method if (result != null && NetworkMarker.hasOutputHandlers(marker)) { result = writePacketInterceptor.constructProxy(result, event, marker);