| 
					
				 | 
			
			
				@@ -0,0 +1,73 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.evps.comm.server.xnet.server.process.response; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.comm.server.kafka.KafkaProducerService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.comm.server.process.dbms.DbmsData; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.comm.server.process.dbms.DbmsDataProcess; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.comm.server.repository.ApplicationRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.dto.EvpsCenter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.kafka.dto.KafkaEvpsEventDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.kafka.dto.KafkaEvpsServiceDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.kafka.dto.KafkaEvpsNetPingDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.kafka.dto.KafkaEvpsServiceEndDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.protocol.EvpsProtocolConst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.protocol.response.EvpsCommResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.protocol.response.RecvPacketDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.evps.common.utils.EvpsUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.AllArgsConstructor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.MDC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+SEQUENCE          일련번호        Integer     4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@AllArgsConstructor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class EvpsNetPing implements EvpsCommResponse { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final DbmsDataProcess dbmsDataProcess; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final KafkaProducerService kafkaProducerService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public boolean response(RecvPacketDto packet) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean result = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MDC.put("id", packet.getCenter().getLogKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.info("[{}], EvpsNetPing.response.", packet.getCenter().getLogKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return makeData(packet, packet.getPacket().getBuffer()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("[{}], EvpsNetPing.response: Exception. will be closed. {}", packet.getCenter().getLogKey(), e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MDC.remove(packet.getCenter().getLogKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MDC.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private KafkaEvpsNetPingDto getData(String serviceId, byte[] buffer, int idx) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        long sequenceNumber = ((long) (buffer[idx++] & 0xFF) << 24) | ((buffer[idx++] & 0xFF) << 16) | ((buffer[idx++] & 0xFF) << 8) | (buffer[idx++] & 0xFF); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return KafkaEvpsNetPingDto.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                .serviceId(serviceId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                .sequenceNumber(sequenceNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private boolean makeData(RecvPacketDto packet, byte[] buffer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        EvpsCenter center = packet.getCenter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (buffer == null || buffer.length != EvpsProtocolConst.EVENT_SERVICE_END_SIZE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("[{}], EvpsNetPing.response: Data Length Error: Required data length({}), Cur({}). will be closed.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    center.getLogKey(), EvpsProtocolConst.EVENT_SERVICE_END_SIZE, buffer == null ? 0 : buffer.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        KafkaEvpsNetPingDto data = getData(packet.getPacket().getServiceId(), buffer, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int idx = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long sequenceNumber = ((long) (buffer[idx++] & 0xFF) << 24) | ((buffer[idx++] & 0xFF) << 16) | ((buffer[idx++] & 0xFF) << 8) | (buffer[idx++] & 0xFF); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("[{}], EvpsNetPing.response: Service Id: {}, SequenceNumber: {}", center.getLogKey(), packet.getPacket().getServiceId(), sequenceNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |