summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/NetworkManager.java
diff options
context:
space:
mode:
authorEvilSeph <evilseph@unaligned.org>2011-06-08 17:00:30 -0400
committerEvilSeph <evilseph@unaligned.org>2011-06-08 17:00:30 -0400
commitb5d1619e75a7d535bc33a9cc6401c64befe608dc (patch)
tree21a2a1ef7a6ec47356fb4386f5b4e5d922ecd57f /src/main/java/net/minecraft/server/NetworkManager.java
parent5296f97cde8e17d37da635c0eb3363d788d85430 (diff)
downloadcraftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar
craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar.gz
craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar.lz
craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar.xz
craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.zip
More teleport changes. Thanks Zeerix!
Diffstat (limited to 'src/main/java/net/minecraft/server/NetworkManager.java')
-rw-r--r--src/main/java/net/minecraft/server/NetworkManager.java28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
index 230f7a15..b8b5f4b4 100644
--- a/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
@@ -93,38 +93,32 @@ public class NetworkManager {
try {
Object object;
- Packet packet;
+ Packet packet = null; // CraftBukkit
int i;
int[] aint;
- if (!this.n.isEmpty() && (this.f == 0 || System.currentTimeMillis() - ((Packet) this.n.get(0)).timestamp >= (long) this.f)) {
- object = this.g;
- synchronized (this.g) {
+ // CraftBukkit start - thread safety and prioitizing packets in this.n (high prioirty queue) over those in this.o (low priority queue).
+ object = this.g;
+ synchronized (this.g) {
+ long time = System.currentTimeMillis();
+ if (!this.n.isEmpty() && (this.f == 0 || time - ((Packet) this.n.get(0)).timestamp >= (long) this.f)) {
packet = (Packet) this.n.remove(0);
this.x -= packet.a() + 1;
- }
-
- Packet.a(packet, this.output);
- aint = e;
- i = packet.b();
- aint[i] += packet.a() + 1;
- flag = true;
- }
-
- if (this.y-- <= 0 && !this.o.isEmpty() && (this.f == 0 || System.currentTimeMillis() - ((Packet) this.o.get(0)).timestamp >= (long) this.f)) {
- object = this.g;
- synchronized (this.g) {
+ } else if (this.y-- <= 0 && !this.o.isEmpty() && (this.f == 0 || time - ((Packet) this.o.get(0)).timestamp >= (long) this.f)) {
packet = (Packet) this.o.remove(0);
this.x -= packet.a() + 1;
+ this.y = 0;
}
+ }
+ if (packet != null) {
Packet.a(packet, this.output);
aint = e;
i = packet.b();
aint[i] += packet.a() + 1;
- this.y = 0;
flag = true;
}
+ // CraftBukkit end
return flag;
} catch (Exception exception) {