forked from Cookies_Github_mirror/AquaDX
97 lines
3.4 KiB
Java
97 lines
3.4 KiB
Java
package icu.samnyan.aqua.sega.aimedb;
|
|
|
|
import icu.samnyan.aqua.sega.aimedb.handler.impl.*;
|
|
import io.netty.buffer.ByteBuf;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
import io.netty.channel.ChannelInboundHandlerAdapter;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.context.annotation.Scope;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* @author samnyan (privateamusement@protonmail.com)
|
|
*/
|
|
|
|
@Component
|
|
@Scope("prototype")
|
|
public class AimeDbRequestHandler extends ChannelInboundHandlerAdapter {
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(AimeDbRequestHandler.class);
|
|
|
|
private final CampaignHandler campaignHandler;
|
|
private final FeliCaLookupHandler feliCaLookupHandler;
|
|
private final GoodbyeHandler goodbyeHandler;
|
|
private final HelloHandler helloHandler;
|
|
private final LogHandler logHandler;
|
|
private final LookupHandler lookupHandler;
|
|
private final Lookup2Handler lookup2Handler;
|
|
private final RegisterHandler registerHandler;
|
|
|
|
@Autowired
|
|
public AimeDbRequestHandler(CampaignHandler campaignHandler, FeliCaLookupHandler feliCaLookupHandler, GoodbyeHandler goodbyeHandler, HelloHandler helloHandler, LogHandler logHandler, LookupHandler lookupHandler, Lookup2Handler lookup2Handler, RegisterHandler registerHandler) {
|
|
this.campaignHandler = campaignHandler;
|
|
this.feliCaLookupHandler = feliCaLookupHandler;
|
|
this.goodbyeHandler = goodbyeHandler;
|
|
this.helloHandler = helloHandler;
|
|
this.logHandler = logHandler;
|
|
this.lookupHandler = lookupHandler;
|
|
this.lookup2Handler = lookup2Handler;
|
|
this.registerHandler = registerHandler;
|
|
}
|
|
|
|
|
|
@Override
|
|
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
|
|
if (msg instanceof Map) {
|
|
int type = ((int) ((Map) msg).get("type"));
|
|
ByteBuf data = (ByteBuf) ((Map) msg).get("data");
|
|
switch (type) {
|
|
case 0x0001:
|
|
feliCaLookupHandler.handle(ctx, data);
|
|
break;
|
|
case 0x0004:
|
|
lookupHandler.handle(ctx, data);
|
|
break;
|
|
case 0x0005:
|
|
registerHandler.handle(ctx, data);
|
|
break;
|
|
case 0x0009:
|
|
logHandler.handle(ctx, data);
|
|
break;
|
|
case 0x000b:
|
|
campaignHandler.handle(ctx, data);
|
|
break;
|
|
case 0x000d:
|
|
registerHandler.handle(ctx, data);
|
|
break;
|
|
case 0x000f:
|
|
lookup2Handler.handle(ctx, data);
|
|
break;
|
|
case 0x0064:
|
|
helloHandler.handle(ctx, data);
|
|
break;
|
|
case 0x0066:
|
|
goodbyeHandler.handle(ctx, data);
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
|
|
cause.printStackTrace();
|
|
ctx.close();
|
|
}
|
|
|
|
@Override
|
|
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
|
super.channelInactive(ctx);
|
|
logger.debug("Connection closed");
|
|
}
|
|
}
|