From 7002b0c4ea6fec54a9a40d23d91dfb03eb3e1016 Mon Sep 17 00:00:00 2001 From: Alfie Cleveland Date: Fri, 25 Nov 2016 20:35:05 +0000 Subject: [PATCH] Optimise NetworkManager diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java index 184ef32..be14c0b 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -62,8 +62,8 @@ public class NetworkManager extends SimpleChannelInboundHandler> { } }; private final EnumProtocolDirection h; - private final Queue i = Queues.newConcurrentLinkedQueue(); - private final ReentrantReadWriteLock j = new ReentrantReadWriteLock(); + // private final Queue i = Queues.newConcurrentLinkedQueue(); // Paper + // private final ReentrantReadWriteLock j = new ReentrantReadWriteLock(); // Paper public Channel channel; // Spigot Start // PAIL public SocketAddress l; @@ -141,32 +141,36 @@ public class NetworkManager extends SimpleChannelInboundHandler> { if (this.isConnected()) { this.m(); this.a(packet, (GenericFutureListener[]) null); - } else { - this.j.writeLock().lock(); - - try { - this.i.add(new NetworkManager.QueuedPacket(packet, (GenericFutureListener[]) null)); - } finally { - this.j.writeLock().unlock(); - } } - + // Paper start - Remove but force a conflict +// else { +// this.j.writeLock().lock(); +// +// try { +// this.i.add(new NetworkManager.QueuedPacket(packet, (GenericFutureListener[]) null)); +// } finally { +// this.j.writeLock().unlock(); +// } +// } + // Paper end } public void sendPacket(Packet packet, GenericFutureListener> genericfuturelistener, GenericFutureListener>... agenericfuturelistener) { if (this.isConnected()) { this.m(); this.a(packet, (GenericFutureListener[]) ArrayUtils.add(agenericfuturelistener, 0, genericfuturelistener)); - } else { - this.j.writeLock().lock(); - - try { - this.i.add(new NetworkManager.QueuedPacket(packet, (GenericFutureListener[]) ArrayUtils.add(agenericfuturelistener, 0, genericfuturelistener))); - } finally { - this.j.writeLock().unlock(); - } } - + // Paper start - Remove but force a conflict +// else { +// this.j.writeLock().lock(); +// +// try { +// this.i.add(new NetworkManager.QueuedPacket(packet, (GenericFutureListener[]) ArrayUtils.add(agenericfuturelistener, 0, genericfuturelistener))); +// } finally { +// this.j.writeLock().unlock(); +// } +// } + // Paper end } private void a(final Packet packet, @Nullable final GenericFutureListener>[] agenericfuturelistener) { @@ -211,20 +215,22 @@ public class NetworkManager extends SimpleChannelInboundHandler> { } private void m() { - if (this.channel != null && this.channel.isOpen()) { - this.j.readLock().lock(); - - try { - while (!this.i.isEmpty()) { - NetworkManager.QueuedPacket networkmanager_queuedpacket = (NetworkManager.QueuedPacket) this.i.poll(); - - this.a(networkmanager_queuedpacket.a, networkmanager_queuedpacket.b); - } - } finally { - this.j.readLock().unlock(); - } - - } + // Paper start - Remove but force a conflict +// if (this.channel != null && this.channel.isOpen()) { +// this.j.readLock().lock(); +// +// try { +// while (!this.i.isEmpty()) { +// NetworkManager.QueuedPacket networkmanager_queuedpacket = (NetworkManager.QueuedPacket) this.i.poll(); +// +// this.a(networkmanager_queuedpacket.a, networkmanager_queuedpacket.b); +// } +// } finally { +// this.j.readLock().unlock(); +// } +// +// } + // Paper end } public void a() { @@ -317,7 +323,7 @@ public class NetworkManager extends SimpleChannelInboundHandler> { } else if (this.i() != null) { this.i().a(new ChatComponentText("Disconnected")); } - this.i.clear(); // Free up packet queue. + // this.i.clear(); // Free up packet queue. // Paper - remove unneeded packet queue } } -- 2.10.2