|
@@ -4,72 +4,60 @@ import com.beanit.its.C2CAuthenticatedMessage;
|
|
|
import com.beanit.its.PDUs;
|
|
|
import com.beanit.its.Reject;
|
|
|
import com.beanit.its.RejectType;
|
|
|
-import com.its.app.common.utils.NettyUtils;
|
|
|
-import com.its.rota.server.common.SpringUtils;
|
|
|
import com.its.rota.server.dto.CenterDto;
|
|
|
-import com.its.rota.server.process.dbms.DbmsDataProcess;
|
|
|
-import io.netty.channel.ChannelHandlerContext;
|
|
|
+import com.its.rota.server.repository.ApplicationRepository;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.slf4j.MDC;
|
|
|
|
|
|
@Slf4j
|
|
|
public class RejectResponse implements ItsAsnResponse {
|
|
|
- private CenterDto obj;
|
|
|
- private ChannelHandlerContext ctx;
|
|
|
+ private CenterDto center;
|
|
|
private C2CAuthenticatedMessage c2c;
|
|
|
- private DbmsDataProcess dbmsDataProcess;
|
|
|
|
|
|
- public RejectResponse(CenterDto obj, ChannelHandlerContext ctx, C2CAuthenticatedMessage c2c) {
|
|
|
- this.obj = obj;
|
|
|
- this.ctx = ctx;
|
|
|
+ public RejectResponse(CenterDto center, C2CAuthenticatedMessage c2c) {
|
|
|
+ this.center = center;
|
|
|
this.c2c = c2c;
|
|
|
- this.dbmsDataProcess = SpringUtils.getBean(DbmsDataProcess.class);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean response() {
|
|
|
- String ipAddress = NettyUtils.getRemoteIpAddress(this.ctx.channel());
|
|
|
- log.info("RejectResponse.response: {}", ipAddress);
|
|
|
-
|
|
|
- PDUs pdus = this.c2c.getPdu();
|
|
|
- Reject reject = pdus.getReject();
|
|
|
- if (reject == null) {
|
|
|
- log.error("RejectResponse.response: {}, reject data null", ipAddress);
|
|
|
- return false;
|
|
|
+ boolean result = true;
|
|
|
+ try {
|
|
|
+ MDC.put("id", this.center.getLogKey());
|
|
|
+ log.info("RejectResponse.response: [{}, {}]. Will be closed.", this.center.getLogKey(), this.center.getIpAddress());
|
|
|
+ PDUs pdus = this.c2c.getPdu();
|
|
|
+ Reject reject = pdus.getReject();
|
|
|
+ if (reject == null) {
|
|
|
+ log.error("RejectResponse.response: [{}, {}]. reject data null", this.center.getLogKey(), this.center.getIpAddress());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ long dataPacketNmbr = c2c.getDatexDataPacketNumber().value.longValue();
|
|
|
+ Long rejectPacketNmbr = reject.getDatexRejectPacketNbr().value.longValue();
|
|
|
+ RejectType rejectType = reject.getDatexRejectType();
|
|
|
+
|
|
|
+ int rejectCode = 0;
|
|
|
+ if (rejectType.getDatexRejectLoginCd() != null) {
|
|
|
+ rejectCode = rejectType.getDatexRejectLoginCd().value.intValue();
|
|
|
+ log.error("RejectResponse.response: [{}, {}]. RejectLoginCd: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", this.center.getLogKey(), this.center.getIpAddress(), dataPacketNmbr, rejectPacketNmbr, rejectCode);
|
|
|
+ }
|
|
|
+ else if (rejectType.getDatexRejectSubscriptionCd() != null) {
|
|
|
+ rejectCode = rejectType.getDatexRejectSubscriptionCd().value.intValue();
|
|
|
+ log.error("RejectResponse.response: [{}, {}]. RejectSubscription: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", this.center.getLogKey(), this.center.getIpAddress(), dataPacketNmbr, rejectPacketNmbr, rejectCode);
|
|
|
+ }
|
|
|
+ else if (rejectType.getDatexRejectPublicationCd() != null) {
|
|
|
+ rejectCode = rejectType.getDatexRejectPublicationCd().value.intValue();
|
|
|
+ log.error("RejectResponse.response: [{}, {}]. RejectPublication: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", this.center.getLogKey(), this.center.getIpAddress(), dataPacketNmbr, rejectPacketNmbr, rejectCode);
|
|
|
+ }
|
|
|
+ ApplicationRepository.closeChannel(this.center, this.center.getNetState().getChannel());
|
|
|
}
|
|
|
-
|
|
|
- long dataPacketNmbr = c2c.getDatexDataPacketNumber().value.longValue();
|
|
|
- Long rejectPacketNmbr = reject.getDatexRejectPacketNbr().value.longValue();
|
|
|
- RejectType rejectType = reject.getDatexRejectType();
|
|
|
-
|
|
|
-// TbRseCtrlHs command = null;
|
|
|
- int rejectCode = 0;
|
|
|
- if (rejectType.getDatexRejectLoginCd() != null) {
|
|
|
- rejectCode = rejectType.getDatexRejectLoginCd().value.intValue();
|
|
|
- log.error("RejectResponse.response: {}. RejectLoginCd: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode);
|
|
|
- // TODO: 클라이언트와의 연결을 종료한다.
|
|
|
- //ItsAsnServerIdleStatePacketHandler.disconnectChannel(this.obj, this.ctx.channel());
|
|
|
+ catch (Exception e) {
|
|
|
+ log.error("RejectResponse.response: [{}, {}]. Packet send Exception. will be closed. {}", this.center.getLogKey(), this.center.getIpAddress(), e.getMessage());
|
|
|
+ result = false;
|
|
|
}
|
|
|
- else if (rejectType.getDatexRejectSubscriptionCd() != null) {
|
|
|
- rejectCode = rejectType.getDatexRejectSubscriptionCd().value.intValue();
|
|
|
- log.error("RejectResponse.response: {}. RejectSubscription: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode);
|
|
|
-// this.obj.removeRegisteredCommands(rejectPacketNmbr, true);
|
|
|
-// command = this.obj.getUserCommands(rejectPacketNmbr);
|
|
|
+ finally {
|
|
|
+ MDC.clear();
|
|
|
}
|
|
|
- else if (rejectType.getDatexRejectPublicationCd() != null) {
|
|
|
- rejectCode = rejectType.getDatexRejectPublicationCd().value.intValue();
|
|
|
- log.error("RejectResponse.response: {}. RejectPublication: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode);
|
|
|
-// this.obj.removeRegisteredCommands(rejectPacketNmbr, true);
|
|
|
-// command = this.obj.getUserCommands(rejectPacketNmbr);
|
|
|
- }
|
|
|
-
|
|
|
-// if (command != null) {
|
|
|
-// log.error("RejectResponse.response: {}. Reject User Command: dataPacketNmbr: {}, rejectPacketNmbr: {}, rejectCode: {}", ipAddress, dataPacketNmbr, rejectPacketNmbr, rejectCode);
|
|
|
-//// this.obj.removeUserCommands(rejectPacketNmbr);
|
|
|
-//// // TODO: 제어명령 전송정보 전송(실패)
|
|
|
-//// command.setRspsType("4"); // 명령 실패(REJECT)로 설정
|
|
|
-//// RseCtlrMapper mapper = (RseCtlrMapper) AppUtils.getBean(RseCtlrMapper.class);
|
|
|
-//// mapper.updateRseCtrlHs(command);
|
|
|
-// }
|
|
|
- return true;
|
|
|
+ return result;
|
|
|
}
|
|
|
}
|