Refactor PacketProcessor, split into more methods
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user