private static final AtomicInteger CHANNEL_COUNTER = new AtomicInteger(0);
public void messageReceived(final ChannelHandlerContext ctx,
final MessageEvent e) throws Exception
{
final Event event = (Event) e.getMessage();
final ChannelBuffer buffer = (ChannelBuffer) event.getSource();
final Channel channel = e.getChannel();
int type = event.getType();
if (Events.LOG_IN == type)
{
LOG.debug("Login attempt from {}", channel.getRemoteAddress());
Player player = lookupPlayer(buffer, channel);
handleLogin(player, channel, buffer);
}
else if (Events.RECONNECT == type)
{
LOG.debug("Reconnect attempt from {}", channel.getRemoteAddress());
String reconnectKey = NettyUtils.readString(buffer);
PlayerSession playerSession = lookupSession(reconnectKey);
handleReconnect(playerSession, channel, buffer);
}
else
{
LOG.error("Invalid event {} sent from remote address {}. "
+ "Going to close channel {}",
new Object[] { event.getType(), channel.getRemoteAddress(),
channel.getId() });
closeChannelWithLoginFailure(channel);
}
}