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