diff --git a/proxy/src/main/java/proxy/Proxy.java b/proxy/src/main/java/proxy/Proxy.java index 3ee3b92..5e1b730 100755 --- a/proxy/src/main/java/proxy/Proxy.java +++ b/proxy/src/main/java/proxy/Proxy.java @@ -58,6 +58,7 @@ import proxy.network.Direction; import proxy.network.Decoder; import proxy.network.Splitter; import proxy.network.Encoder; +import proxy.network.EventLoopLoader; import proxy.network.Prepender; import proxy.command.*; import proxy.handler.HandshakeHandler; @@ -68,17 +69,16 @@ import proxy.packet.S40PacketDisconnect; import proxy.packet.ServerInfo; import proxy.util.Formatter; import proxy.util.User; -import proxy.util.LazyLoader; import proxy.util.Log; public class Proxy { - public static final LazyLoader NIO_EVENT_LOOP = new LazyLoader() { - protected NioEventLoopGroup load() { + public static final EventLoopLoader NIO_EVENT_LOOP = new EventLoopLoader() { + protected NioEventLoopGroup createEventLoop() { return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).build()); } }; - public static final LazyLoader EPOLL_EVENT_LOOP = new LazyLoader() { - protected EpollEventLoopGroup load() { + public static final EventLoopLoader EPOLL_EVENT_LOOP = new EventLoopLoader() { + protected EpollEventLoopGroup createEventLoop() { return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).build()); } }; @@ -229,7 +229,7 @@ public class Proxy { public void addLanEndpoint(InetAddress address, int port) throws IOException { synchronized(this.endpoints) { Class oclass; - LazyLoader lazyloadbase; + EventLoopLoader lazyloadbase; if(Epoll.isAvailable() && this.epoll) { oclass = EpollServerSocketChannel.class; @@ -262,7 +262,7 @@ public class Proxy { p_initChannel_1_.pipeline().addLast((String)"packet_handler", (ChannelHandler)networkmanager); networkmanager.setNetHandler(new HandshakeHandler(Proxy.this, networkmanager)); } - }).group(lazyloadbase.getValue()).localAddress(address, port)).bind().syncUninterruptibly()); + }).group(lazyloadbase.get()).localAddress(address, port)).bind().syncUninterruptibly()); } } diff --git a/proxy/src/main/java/proxy/network/Connection.java b/proxy/src/main/java/proxy/network/Connection.java index fff5d37..8cd2a4a 100755 --- a/proxy/src/main/java/proxy/network/Connection.java +++ b/proxy/src/main/java/proxy/network/Connection.java @@ -31,22 +31,21 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import proxy.handler.Handler; import proxy.handler.Handler.ThreadQuickExitException; -import proxy.util.LazyLoader; import proxy.util.Log; public class Connection extends SimpleChannelInboundHandler { public static final AttributeKey STATE = AttributeKey.valueOf("protocol"); - public static final LazyLoader CLIENT_NIO_EVENTLOOP = new LazyLoader() + public static final EventLoopLoader CLIENT_NIO_EVENTLOOP = new EventLoopLoader() { - protected NioEventLoopGroup load() + protected NioEventLoopGroup createEventLoop() { return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Client IO #%d").setDaemon(true).build()); } }; - public static final LazyLoader CLIENT_EPOLL_EVENTLOOP = new LazyLoader() + public static final EventLoopLoader CLIENT_EPOLL_EVENTLOOP = new EventLoopLoader() { - protected EpollEventLoopGroup load() + protected EpollEventLoopGroup createEventLoop() { return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Client IO #%d").setDaemon(true).build()); } @@ -302,7 +301,7 @@ public class Connection extends SimpleChannelInboundHandler { final Connection networkmanager = new Connection(Direction.CLIENT); Class oclass; - LazyLoader lazyloadbase; + EventLoopLoader lazyloadbase; if (Epoll.isAvailable() && useNativeTransport) { @@ -315,7 +314,7 @@ public class Connection extends SimpleChannelInboundHandler lazyloadbase = CLIENT_NIO_EVENTLOOP; } - ((Bootstrap)((Bootstrap)((Bootstrap)(new Bootstrap()).group(lazyloadbase.getValue())).handler(new ChannelInitializer() + ((Bootstrap)((Bootstrap)((Bootstrap)(new Bootstrap()).group(lazyloadbase.get())).handler(new ChannelInitializer() { protected void initChannel(Channel p_initChannel_1_) throws Exception { diff --git a/proxy/src/main/java/proxy/network/EventLoopLoader.java b/proxy/src/main/java/proxy/network/EventLoopLoader.java new file mode 100755 index 0000000..310d57f --- /dev/null +++ b/proxy/src/main/java/proxy/network/EventLoopLoader.java @@ -0,0 +1,15 @@ +package proxy.network; + +import io.netty.channel.EventLoopGroup; + +public abstract class EventLoopLoader { + private T group; + + public T get() { + if(this.group == null) + this.group = this.createEventLoop(); + return this.group; + } + + protected abstract T createEventLoop(); +} diff --git a/proxy/src/main/java/proxy/util/LazyLoader.java b/proxy/src/main/java/proxy/util/LazyLoader.java deleted file mode 100755 index 65b6b2e..0000000 --- a/proxy/src/main/java/proxy/util/LazyLoader.java +++ /dev/null @@ -1,18 +0,0 @@ -package proxy.util; - -import io.netty.channel.EventLoopGroup; - -public abstract class LazyLoader { - private T value; - private boolean isLoaded = false; - - public T getValue() { - if(!this.isLoaded) { - this.isLoaded = true; - this.value = this.load(); - } - return this.value; - } - - protected abstract T load(); -}