aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0171-Optimise-NetworkManager.patch
blob: 05fc8a2868bd418087dd66ee8a47096a841083bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
From 863b08010dbfe4e4046e553ced31acb9c2d2fde1 Mon Sep 17 00:00:00 2001
From: Alfie Cleveland <alfeh@me.com>
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 184ef32a8..be14c0b25 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<Packet<?>> {
         }
     };
     private final EnumProtocolDirection h;
-    private final Queue<NetworkManager.QueuedPacket> i = Queues.newConcurrentLinkedQueue();
-    private final ReentrantReadWriteLock j = new ReentrantReadWriteLock();
+    // private final Queue<NetworkManager.QueuedPacket> 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<Packet<?>> {
         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<? extends Future<? super Void>> genericfuturelistener, GenericFutureListener<? extends Future<? super Void>>... 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<? extends Future<? super Void>>[] agenericfuturelistener) {
@@ -211,20 +215,22 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
     }
 
     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<Packet<?>> {
                 } 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.12.2.windows.2