Clean up pipeline flow.

This commit is contained in:
md_5 2013-06-15 21:08:49 +10:00
parent b55944e2fb
commit 3ce7982778
3 changed files with 28 additions and 30 deletions

View File

@ -1,5 +1,6 @@
package net.md_5.bungee.connection; package net.md_5.bungee.connection;
import lombok.RequiredArgsConstructor;
import net.md_5.bungee.BungeeCord; import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.EntityMap; import net.md_5.bungee.EntityMap;
import net.md_5.bungee.UserConnection; import net.md_5.bungee.UserConnection;
@ -16,17 +17,16 @@ import net.md_5.bungee.protocol.packet.Packet3Chat;
import net.md_5.bungee.protocol.packet.PacketCCSettings; import net.md_5.bungee.protocol.packet.PacketCCSettings;
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage; import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
@RequiredArgsConstructor
public class UpstreamBridge extends PacketHandler public class UpstreamBridge extends PacketHandler
{ {
private final ProxyServer bungee; private final ProxyServer bungee;
private final UserConnection con; private final UserConnection con;
public UpstreamBridge(ProxyServer bungee, UserConnection con) @Override
public void added()
{ {
this.bungee = bungee;
this.con = con;
BungeeCord.getInstance().addConnection( con ); BungeeCord.getInstance().addConnection( con );
con.getTabList().onConnect(); con.getTabList().onConnect();
con.unsafe().sendPacket( BungeeCord.getInstance().registerChannels() ); con.unsafe().sendPacket( BungeeCord.getInstance().registerChannels() );

View File

@ -26,41 +26,36 @@ public class HandlerBoss extends ChannelInboundMessageHandlerAdapter<Object>
{ {
Preconditions.checkArgument( handler != null, "handler" ); Preconditions.checkArgument( handler != null, "handler" );
this.handler = handler; this.handler = handler;
this.handler.added();
} }
@Override @Override
public void channelActive(ChannelHandlerContext ctx) throws Exception public void channelActive(ChannelHandlerContext ctx) throws Exception
{ {
if ( handler != null ) channel = new ChannelWrapper( ctx );
{ handler.connected( channel );
channel = new ChannelWrapper( ctx );
handler.connected( channel );
if ( !( handler instanceof InitialHandler || handler instanceof PingHandler ) ) if ( !( handler instanceof InitialHandler || handler instanceof PingHandler ) )
{ {
ProxyServer.getInstance().getLogger().log( Level.INFO, "{0} has connected", handler ); ProxyServer.getInstance().getLogger().log( Level.INFO, "{0} has connected", handler );
}
} }
} }
@Override @Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception public void channelInactive(ChannelHandlerContext ctx) throws Exception
{ {
if ( handler != null ) handler.disconnected( channel );
{
handler.disconnected( channel );
if ( !( handler instanceof InitialHandler || handler instanceof PingHandler ) ) if ( !( handler instanceof InitialHandler || handler instanceof PingHandler ) )
{ {
ProxyServer.getInstance().getLogger().log( Level.INFO, "{0} has disconnected", handler ); ProxyServer.getInstance().getLogger().log( Level.INFO, "{0} has disconnected", handler );
}
} }
} }
@Override @Override
public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception
{ {
if ( handler != null && ctx.channel().isActive() ) if ( !channel.isClosed() )
{ {
if ( msg instanceof PacketWrapper ) if ( msg instanceof PacketWrapper )
{ {
@ -86,7 +81,7 @@ public class HandlerBoss extends ChannelInboundMessageHandlerAdapter<Object>
@Override @Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception
{ {
if ( ctx.channel().isActive() ) if ( !channel.isClosed() )
{ {
if ( cause instanceof ReadTimeoutException ) if ( cause instanceof ReadTimeoutException )
{ {
@ -98,17 +93,16 @@ public class HandlerBoss extends ChannelInboundMessageHandlerAdapter<Object>
{ {
ProxyServer.getInstance().getLogger().log( Level.SEVERE, handler + " - encountered exception", cause ); ProxyServer.getInstance().getLogger().log( Level.SEVERE, handler + " - encountered exception", cause );
} }
if ( handler != null )
try
{ {
try handler.exception( cause );
{ } catch ( Exception ex )
handler.exception( cause ); {
} catch ( Exception ex ) ProxyServer.getInstance().getLogger().log( Level.SEVERE, handler + " - exception processing exception", ex );
{
ProxyServer.getInstance().getLogger().log( Level.SEVERE, handler + " - exception processing exception", ex );
}
} }
ctx.close();
channel.close();
} }
} }
} }

View File

@ -14,6 +14,10 @@ public abstract class PacketHandler extends net.md_5.bungee.protocol.packet.Abst
{ {
} }
public void added()
{
}
public void connected(ChannelWrapper channel) throws Exception public void connected(ChannelWrapper channel) throws Exception
{ {
} }