Small cleanups to netty

This commit is contained in:
md_5 2013-06-01 14:23:53 +10:00
parent fdd25ff498
commit 53d9d1734b

View File

@ -1,4 +1,4 @@
From 5c9533473e7a221d24d6aa9a36e43804aae72298 Mon Sep 17 00:00:00 2001 From c423a31e3705316ac33d4ebee8557320250cd3a6 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au> From: md_5 <md_5@live.com.au>
Date: Tue, 23 Apr 2013 11:47:32 +1000 Date: Tue, 23 Apr 2013 11:47:32 +1000
Subject: [PATCH] Netty Subject: [PATCH] Netty
@ -484,16 +484,17 @@ index 0000000..4ff943b
+} +}
diff --git a/src/main/java/org/spigotmc/netty/NettyNetworkManager.java b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java diff --git a/src/main/java/org/spigotmc/netty/NettyNetworkManager.java b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java
new file mode 100644 new file mode 100644
index 0000000..93193fc index 0000000..d6581a0
--- /dev/null --- /dev/null
+++ b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java +++ b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java
@@ -0,0 +1,296 @@ @@ -0,0 +1,301 @@
+package org.spigotmc.netty; +package org.spigotmc.netty;
+ +
+import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import io.netty.channel.Channel; +import io.netty.channel.Channel;
+import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundMessageHandlerAdapter; +import io.netty.channel.ChannelInboundMessageHandlerAdapter;
+import io.netty.channel.ChannelPromise;
+import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.SocketChannel;
+import java.net.InetSocketAddress; +import java.net.InetSocketAddress;
+import java.net.Socket; +import java.net.Socket;
@ -666,12 +667,16 @@ index 0000000..93193fc
+ { + {
+ highPriorityQueue.add( packet ); + highPriorityQueue.add( packet );
+ +
+ ChannelPromise promise;
+ if ( packet instanceof Packet255KickDisconnect ) + if ( packet instanceof Packet255KickDisconnect )
+ { + {
+ channel.pipeline().get( OutboundManager.class ).flushNow = true; + promise = channel.voidPromise();
+ } else
+ {
+ promise = channel.newPromise();
+ } + }
+ +
+ channel.write( packet, channel.voidPromise() ); + channel.write( packet, promise );
+ if ( packet instanceof Packet252KeyResponse ) + if ( packet instanceof Packet252KeyResponse )
+ { + {
+ Cipher encrypt = NettyServerConnection.getCipher( Cipher.ENCRYPT_MODE, secret ); + Cipher encrypt = NettyServerConnection.getCipher( Cipher.ENCRYPT_MODE, secret );
@ -786,10 +791,10 @@ index 0000000..93193fc
+} +}
diff --git a/src/main/java/org/spigotmc/netty/NettyServerConnection.java b/src/main/java/org/spigotmc/netty/NettyServerConnection.java diff --git a/src/main/java/org/spigotmc/netty/NettyServerConnection.java b/src/main/java/org/spigotmc/netty/NettyServerConnection.java
new file mode 100644 new file mode 100644
index 0000000..3822a3f index 0000000..575db8b
--- /dev/null --- /dev/null
+++ b/src/main/java/org/spigotmc/netty/NettyServerConnection.java +++ b/src/main/java/org/spigotmc/netty/NettyServerConnection.java
@@ -0,0 +1,91 @@ @@ -0,0 +1,100 @@
+package org.spigotmc.netty; +package org.spigotmc.netty;
+ +
+import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.google.common.util.concurrent.ThreadFactoryBuilder;
@ -803,12 +808,14 @@ index 0000000..3822a3f
+import io.netty.channel.socket.nio.NioServerSocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel;
+import io.netty.handler.timeout.ReadTimeoutHandler; +import io.netty.handler.timeout.ReadTimeoutHandler;
+import java.net.InetAddress; +import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.security.GeneralSecurityException; +import java.security.GeneralSecurityException;
+import java.security.Key; +import java.security.Key;
+import javax.crypto.Cipher; +import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.IvParameterSpec;
+import net.minecraft.server.MinecraftServer; +import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.ServerConnection; +import net.minecraft.server.ServerConnection;
+import org.spigotmc.MultiplexingServerConnection;
+ +
+/** +/**
+ * This is the NettyServerConnection class. It implements + * This is the NettyServerConnection class. It implements
@ -821,7 +828,7 @@ index 0000000..3822a3f
+ +
+ private final ChannelFuture socket; + private final ChannelFuture socket;
+ +
+ public NettyServerConnection(MinecraftServer ms, InetAddress host, int port) + public NettyServerConnection(final MinecraftServer ms, InetAddress host, int port)
+ { + {
+ super( ms ); + super( ms );
+ int threads = Integer.getInteger( "org.spigotmc.netty.threads", 3 ); + int threads = Integer.getInteger( "org.spigotmc.netty.threads", 3 );
@ -830,6 +837,13 @@ index 0000000..3822a3f
+ @Override + @Override
+ public void initChannel(Channel ch) throws Exception + public void initChannel(Channel ch) throws Exception
+ { + {
+ // Check the throttle
+ if ( ( (MultiplexingServerConnection) ms.ae() ).throttle( ( (InetSocketAddress) ch.remoteAddress() ).getAddress() ) )
+ {
+ ch.close();
+ return;
+ }
+ // Set IP_TOS
+ try + try
+ { + {
+ ch.config().setOption( ChannelOption.IP_TOS, 0x18 ); + ch.config().setOption( ChannelOption.IP_TOS, 0x18 );
@ -1183,10 +1197,10 @@ index 0000000..5da8a59
+} +}
diff --git a/src/main/java/org/spigotmc/netty/OutboundManager.java b/src/main/java/org/spigotmc/netty/OutboundManager.java diff --git a/src/main/java/org/spigotmc/netty/OutboundManager.java b/src/main/java/org/spigotmc/netty/OutboundManager.java
new file mode 100644 new file mode 100644
index 0000000..5e7e950 index 0000000..44def62
--- /dev/null --- /dev/null
+++ b/src/main/java/org/spigotmc/netty/OutboundManager.java +++ b/src/main/java/org/spigotmc/netty/OutboundManager.java
@@ -0,0 +1,29 @@ @@ -0,0 +1,30 @@
+package org.spigotmc.netty; +package org.spigotmc.netty;
+ +
+import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelHandlerContext;
@ -1194,10 +1208,11 @@ index 0000000..5e7e950
+import io.netty.channel.ChannelPromise; +import io.netty.channel.ChannelPromise;
+import net.minecraft.server.PendingConnection; +import net.minecraft.server.PendingConnection;
+ +
+public class OutboundManager extends ChannelOperationHandlerAdapter +class OutboundManager extends ChannelOperationHandlerAdapter
+{ +{
+ +
+ private static final int FLUSH_TIME = 3; + private static final int FLUSH_TIME = 2;
+ /*========================================================================*/
+ private long lastFlush; + private long lastFlush;
+ private final NettyNetworkManager manager; + private final NettyNetworkManager manager;
+ public boolean flushNow = false; + public boolean flushNow = false;
@ -1209,7 +1224,7 @@ index 0000000..5e7e950
+ +
+ public void flush(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception + public void flush(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception
+ { + {
+ if ( flushNow || manager.connection instanceof PendingConnection || System.currentTimeMillis() - lastFlush > FLUSH_TIME ) + if ( promise == ctx.channel().voidPromise() || manager.connection instanceof PendingConnection || System.currentTimeMillis() - lastFlush > FLUSH_TIME )
+ { + {
+ lastFlush = System.currentTimeMillis(); + lastFlush = System.currentTimeMillis();
+ ctx.flush( promise ); + ctx.flush( promise );
@ -1218,10 +1233,10 @@ index 0000000..5e7e950
+} +}
diff --git a/src/main/java/org/spigotmc/netty/PacketDecoder.java b/src/main/java/org/spigotmc/netty/PacketDecoder.java diff --git a/src/main/java/org/spigotmc/netty/PacketDecoder.java b/src/main/java/org/spigotmc/netty/PacketDecoder.java
new file mode 100644 new file mode 100644
index 0000000..f7c4c65 index 0000000..60b75d0
--- /dev/null --- /dev/null
+++ b/src/main/java/org/spigotmc/netty/PacketDecoder.java +++ b/src/main/java/org/spigotmc/netty/PacketDecoder.java
@@ -0,0 +1,69 @@ @@ -0,0 +1,68 @@
+package org.spigotmc.netty; +package org.spigotmc.netty;
+ +
+import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBuf;
@ -1281,9 +1296,8 @@ index 0000000..f7c4c65
+ } + }
+ +
+ checkpoint( ReadState.HEADER ); + checkpoint( ReadState.HEADER );
+ Packet ret = packet; + out.add( packet );
+ packet = null; + packet = null;
+ out.add( ret );
+ break; + break;
+ default: + default:
+ throw new IllegalStateException(); + throw new IllegalStateException();