Refactor PacketProcessor, split into more methods

This commit is contained in:
P0nk
2021-06-23 16:08:30 +02:00
parent 5431150362
commit 0fa6ad0e24

View File

@@ -21,34 +21,15 @@
*/ */
package net; package net;
import java.util.LinkedHashMap;
import java.util.Map;
import net.opcodes.RecvOpcode; import net.opcodes.RecvOpcode;
import net.server.channel.handlers.*; import net.server.channel.handlers.*;
import net.server.handlers.CustomPacketHandler; import net.server.handlers.CustomPacketHandler;
import net.server.handlers.KeepAliveHandler; import net.server.handlers.KeepAliveHandler;
import net.server.handlers.LoginRequiringNoOpHandler; import net.server.handlers.LoginRequiringNoOpHandler;
import net.server.handlers.login.AcceptToSHandler; import net.server.handlers.login.*;
import net.server.handlers.login.AfterLoginHandler;
import net.server.handlers.login.CharSelectedHandler; import java.util.LinkedHashMap;
import net.server.handlers.login.CharSelectedWithPicHandler; import java.util.Map;
import net.server.handlers.login.CharlistRequestHandler;
import net.server.handlers.login.CheckCharNameHandler;
import net.server.handlers.login.CreateCharHandler;
import net.server.handlers.login.DeleteCharHandler;
import net.server.handlers.login.GuestLoginHandler;
import net.server.handlers.login.LoginPasswordHandler;
import net.server.handlers.login.RegisterPicHandler;
import net.server.handlers.login.RegisterPinHandler;
import net.server.handlers.login.RelogRequestHandler;
import net.server.handlers.login.ServerStatusRequestHandler;
import net.server.handlers.login.ServerlistRequestHandler;
import net.server.handlers.login.SetGenderHandler;
import net.server.handlers.login.ViewAllCharHandler;
import net.server.handlers.login.ViewAllCharRegisterPicHandler;
import net.server.handlers.login.ViewAllCharSelectedHandler;
import net.server.handlers.login.ViewAllCharSelectedWithPicHandler;
public final class PacketProcessor { public final class PacketProcessor {
@@ -65,6 +46,14 @@ public final class PacketProcessor {
handlers = new MaplePacketHandler[maxRecvOp + 1]; handlers = new MaplePacketHandler[maxRecvOp + 1];
} }
public static PacketProcessor getLoginServerProcessor() {
return getProcessor(-1, -1);
}
public static PacketProcessor getChannelServerProcessor(int world, int channel) {
return getProcessor(world, channel);
}
public MaplePacketHandler getHandler(short packetId) { public MaplePacketHandler getHandler(short packetId) {
if (packetId > handlers.length) { if (packetId > handlers.length) {
return null; return null;
@@ -86,12 +75,12 @@ public final class PacketProcessor {
} }
public synchronized static PacketProcessor getProcessor(int world, int channel) { public synchronized static PacketProcessor getProcessor(int world, int channel) {
final String lolpair = world + " " + channel; final String processorId = world + " " + channel;
PacketProcessor processor = instances.get(lolpair); PacketProcessor processor = instances.get(processorId);
if (processor == null) { if (processor == null) {
processor = new PacketProcessor(); processor = new PacketProcessor();
processor.reset(channel); processor.reset(channel);
instances.put(lolpair, processor); instances.put(processorId, processor);
} }
return processor; return processor;
} }
@@ -99,10 +88,21 @@ public final class PacketProcessor {
public void reset(int channel) { public void reset(int channel) {
handlers = new MaplePacketHandler[handlers.length]; handlers = new MaplePacketHandler[handlers.length];
registerCommonHandlers();
if (channel < 0) {
registerLoginHandlers();
} else {
registerChannelHandlers();
}
}
private void registerCommonHandlers() {
registerHandler(RecvOpcode.PONG, new KeepAliveHandler()); registerHandler(RecvOpcode.PONG, new KeepAliveHandler());
registerHandler(RecvOpcode.CUSTOM_PACKET, new CustomPacketHandler()); registerHandler(RecvOpcode.CUSTOM_PACKET, new CustomPacketHandler());
if (channel < 0) { }
//LOGIN HANDLERS
private void registerLoginHandlers() {
registerHandler(RecvOpcode.ACCEPT_TOS, new AcceptToSHandler()); registerHandler(RecvOpcode.ACCEPT_TOS, new AcceptToSHandler());
registerHandler(RecvOpcode.AFTER_LOGIN, new AfterLoginHandler()); registerHandler(RecvOpcode.AFTER_LOGIN, new AfterLoginHandler());
registerHandler(RecvOpcode.SERVERLIST_REREQUEST, new ServerlistRequestHandler()); registerHandler(RecvOpcode.SERVERLIST_REREQUEST, new ServerlistRequestHandler());
@@ -124,8 +124,9 @@ public final class PacketProcessor {
registerHandler(RecvOpcode.SET_GENDER, new SetGenderHandler()); registerHandler(RecvOpcode.SET_GENDER, new SetGenderHandler());
registerHandler(RecvOpcode.VIEW_ALL_WITH_PIC, new ViewAllCharSelectedWithPicHandler()); registerHandler(RecvOpcode.VIEW_ALL_WITH_PIC, new ViewAllCharSelectedWithPicHandler());
registerHandler(RecvOpcode.VIEW_ALL_PIC_REGISTER, new ViewAllCharRegisterPicHandler()); registerHandler(RecvOpcode.VIEW_ALL_PIC_REGISTER, new ViewAllCharRegisterPicHandler());
} else { }
//CHANNEL HANDLERS
private void registerChannelHandlers() {
registerHandler(RecvOpcode.NAME_TRANSFER, new TransferNameHandler()); registerHandler(RecvOpcode.NAME_TRANSFER, new TransferNameHandler());
registerHandler(RecvOpcode.CHECK_CHAR_NAME, new TransferNameResultHandler()); registerHandler(RecvOpcode.CHECK_CHAR_NAME, new TransferNameResultHandler());
registerHandler(RecvOpcode.WORLD_TRANSFER, new TransferWorldHandler()); registerHandler(RecvOpcode.WORLD_TRANSFER, new TransferWorldHandler());
@@ -276,4 +277,3 @@ public final class PacketProcessor {
registerHandler(RecvOpcode.CHANGE_QUICKSLOT, new QuickslotKeyMappedModifiedHandler()); registerHandler(RecvOpcode.CHANGE_QUICKSLOT, new QuickslotKeyMappedModifiedHandler());
} }
} }
}