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
|