getFrameStructMap() {
return frameStructMap;
}
@@ -128,6 +132,26 @@
return fixedPropertyMap;
}
+
+ /**
+ * 获取过滤字段的长度
+ */
+ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) {
+ if (showSkip()) {
+ return null;
+ }
+ //获取缓存
+ String catchKey = PROTOCOL_FILER_LENGTH + protocolConfig.getId();
+ if (this.singleObjects.containsKey(catchKey)) {
+ return (Integer) singleObjects.get(catchKey);
+ }
+ FieldParser fieldParser = new DefaultProtocolFieldParser();
+ Integer totalFilterLength = fieldParser.totalFilterLength(protocolConfig, getFixFieldConfigMap());
+ this.singleObjects.put(catchKey, totalFilterLength);
+ return totalFilterLength;
+ }
+
+
/**
* 获取帧结构应有的总长度
*/
@@ -142,9 +166,7 @@
}
Integer appointFrameLength = getProtocolFieldValue(protocolConfig.getTotalLengthId(), byteBuf);
if (appointFrameLength != null) {
- //获取过滤的字段集合总长度
- FieldParser fieldParser = new DefaultProtocolFieldParser();
- Integer totalFilterLength = fieldParser.getTotalFilterLength(protocolConfig, byteBuf, getFixFieldConfigMap());
+ Integer totalFilterLength = getTotalFilterLength(protocolConfig);
//计算总长度
Integer totalLength = appointFrameLength + totalFilterLength;
//加入缓存
@@ -204,6 +226,8 @@
}
/**
+ * 对解密的内容进行尾部清零操作
+ *
* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文,
* 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备
*
@@ -236,7 +260,11 @@
return optionalProtocolFieldConfig.isPresent() ? optionalProtocolFieldConfig.get() : null;
}
-
+ /**
+ * list 转map
+ *
+ * @return
+ */
private Map getFixFieldConfigMap() {
Map fixDataFieldMap = protocolFieldConfigs.stream()
.collect(
diff --git a/sensorhub-core/pom.xml b/sensorhub-core/pom.xml
index 3a55d51..632d189 100644
--- a/sensorhub-core/pom.xml
+++ b/sensorhub-core/pom.xml
@@ -36,12 +36,6 @@
0.0.1-SNAPSHOT
-
- org.bouncycastle
- bcprov-jdk15to18
- 1.71
-
-
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java
index 9bbec83..3764c70 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java
@@ -2,8 +2,8 @@
import com.casic.missiles.predecodec.AbstractPreProcessing;
import com.casic.missiles.replier.SensorhubReplier;
-import com.casic.missiles.util.ClassUtil;
import com.casic.missiles.codec.SensorhubDecoder;
+import com.casic.missiles.util.ClazzUtil;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
@@ -23,7 +23,7 @@
ChannelPipeline pipeline = socketChannel.pipeline();
pipeline.addLast(new LoggingHandler(LogLevel.INFO));
//添加前置处理器
- List abstractPreProcessingList = ClassUtil.getSubClassList(AbstractPreProcessing.class, true);
+ List abstractPreProcessingList = ClazzUtil.getSubClassList(AbstractPreProcessing.class, true);
for (AbstractPreProcessing abstractPreprocessing : abstractPreProcessingList) {
pipeline.addLast(abstractPreprocessing);
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java
index 6c80b11..0619437 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java
@@ -37,9 +37,19 @@
@RequiredArgsConstructor
public class GenericProtocolParser implements ProtocolParser, ReplyCommandEnum {
- // 匹配首字母前导码=> 帧结构匹配前导码=>
- // 1、如果没有该协议,会存在拆包问题,缓存数组重置,经过帧结构判断进行数据分发
- // 2、存在该协议,经过帧结构判断选定帧协议,进行数据报文的解析
+ /**
+ * TO DO: 该集合用于数据报文的的数据解析
+ * 1、前导码匹配报文协议
+ * 2、构建协议工厂(初始化获取与协议有关的数据库配置)
+ * 3、规则匹配,获取相关的实例,报文的内容,进行报文的加解密
+ * 4、检测帧结构是否完整
+ * 5、进行帧业务数据的内容解析,分为组合字段解析、单个字段解析
+ * 6、构建发送内容,进行发送
+ * 7、构建回复需要的返回内容,为回复做准备
+ *
+ * @param byteBuf 报文内容
+ * @return 构建回复需要的返回内容,为回复做准备
+ */
@Override
public ParseResult doParseProtocol(ByteBuf byteBuf) {
//匹配前导码
@@ -141,21 +151,28 @@
//数据构建,获取固定字段的store和业务字段store
private List