| package com.genersoft.iot.vmp.jt1078.proc.request; | 
|   | 
| import com.genersoft.iot.vmp.jt1078.proc.Header; | 
| import com.genersoft.iot.vmp.jt1078.proc.response.Rs; | 
| import com.genersoft.iot.vmp.jt1078.session.Session; | 
| import io.netty.buffer.ByteBuf; | 
| import org.slf4j.Logger; | 
| import org.slf4j.LoggerFactory; | 
| import org.springframework.util.StringUtils; | 
|   | 
| /** | 
|  * @author QingtaiJiang | 
|  * @date 2023/4/27 18:50 | 
|  * @email qingtaij@163.com | 
|  */ | 
| public abstract class Re { | 
|     private final static Logger log = LoggerFactory.getLogger(Re.class); | 
|   | 
|     protected abstract Rs decode0(ByteBuf buf, Header header, Session session); | 
|   | 
|     protected abstract Rs handler(Header header, Session session); | 
|   | 
|     public Rs decode(ByteBuf buf, Header header, Session session) { | 
|         if (session != null && !StringUtils.hasLength(session.getDevId())) { | 
|             session.register(header.getDevId(), (int) header.getVersion(), header); | 
|         } | 
|         Rs rs = decode0(buf, header, session); | 
|         Rs rsHand = handler(header, session); | 
|         if (rs == null && rsHand != null) { | 
|             rs = rsHand; | 
|         } else if (rs != null && rsHand != null) { | 
|             log.warn("decode0:{} 与 handler:{} 返回值冲突,采用decode0返回值", rs, rsHand); | 
|         } | 
|         if (rs != null) { | 
|             rs.setHeader(header); | 
|         } | 
|   | 
|         return rs; | 
|     } | 
| } |