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; } }