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