Package l2p.loginserver

Source Code of l2p.loginserver.L2LoginPacketHandler

package l2p.loginserver;

import java.nio.ByteBuffer;

import l2p.extensions.network.IPacketHandler;
import l2p.extensions.network.ReceivablePacket;
import l2p.loginserver.L2LoginClient.LoginClientState;
import l2p.loginserver.clientpackets.AuthGameGuard;
import l2p.loginserver.clientpackets.RequestAuthLogin;
import l2p.loginserver.clientpackets.RequestServerList;
import l2p.loginserver.clientpackets.RequestServerLogin;
import l2p.loginserver.serverpackets.LoginFail;
import l2p.util.Util;

public final class L2LoginPacketHandler implements IPacketHandler<L2LoginClient>
{
  public ReceivablePacket<L2LoginClient> handlePacket(ByteBuffer buf, L2LoginClient client)
  {
    int opcode = buf.get() & 0xFF;
    ReceivablePacket<L2LoginClient> packet = null;
    LoginClientState state = client.getState();
    switch(state)
    {
      case CONNECTED:
        if(opcode == 0x07)
        {
          packet = new AuthGameGuard();
        }
        else
        {
          debugOpcode(opcode, state, client, buf);
        }
        break;
      case AUTHED_GG:
        if(opcode == 0x00)
        {
          packet = new RequestAuthLogin();
        }
        else if(opcode == 0x02)
        {
          client.close(new LoginFail(LoginFail.LoginFailReason.REASON_ACCESS_FAILED));
        }
        else if(opcode != 0x05) //на случай когда клиент зажимает ентер
        {
          debugOpcode(opcode, state, client, buf);
        }
        break;
      case AUTHED_LOGIN:
        if(opcode == 0x05)
        {
          packet = new RequestServerList();
        }
        else if(opcode == 0x02)
        {
          packet = new RequestServerLogin();
        }
        else
        {
          debugOpcode(opcode, state, client, buf);
        }
        break;
    }
    return packet;
  }

  private void debugOpcode(int opcode, LoginClientState state, L2LoginClient client, ByteBuffer buf)
  {
    int sz = buf.remaining();
    byte[] arr = new byte[sz];
    buf.get(arr);
    System.out.println("Unknown Opcode: " + opcode + " for state: " + state.name() + " from IP: " + client);
    System.out.println(Util.printData(arr, sz));
  }
}
TOP

Related Classes of l2p.loginserver.L2LoginPacketHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.