From 9d61a93077d22dec47760c294a8658f5a5223b67 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 03 一月 2024 15:50:47 +0800
Subject: [PATCH] 优化数据库sql文件组织方式
---
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java | 63 ++++++++++++++++++++++++-------
1 files changed, 48 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
old mode 100644
new mode 100755
index 86ee0f4..524c85b
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
@@ -6,6 +6,7 @@
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
+import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import com.genersoft.iot.vmp.media.zlm.ZLMServerFactory;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
@@ -16,17 +17,22 @@
import com.genersoft.iot.vmp.utils.DateUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import gov.nist.javax.sip.message.SIPRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.sip.InvalidArgumentException;
+import javax.sip.PeerUnavailableException;
import javax.sip.SipException;
+import javax.sip.SipFactory;
+import javax.sip.address.Address;
+import javax.sip.address.SipURI;
+import javax.sip.header.*;
+import javax.sip.message.Request;
import java.text.ParseException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @author lin
@@ -182,6 +188,7 @@
}
}
+
return false;
}
@@ -226,18 +233,19 @@
try {
commanderForPlatform.keepalive(parentPlatform, eventResult -> {
// 蹇冭烦澶辫触
- if (eventResult.type == SipSubscribe.EventResultType.timeout) {
- // 蹇冭烦瓒呮椂
- ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId());
- // 姝ゆ椂鏄涓夋蹇冭烦瓒呮椂锛� 骞冲彴绂荤嚎
- if (platformCatch.getKeepAliveReply() == 2) {
- // 璁剧疆骞冲彴绂荤嚎锛屽苟閲嶆柊娉ㄥ唽
- logger.info("[鍥芥爣绾ц仈] 涓夋蹇冭烦瓒呮椂, 骞冲彴{}({})绂荤嚎", parentPlatform.getName(), parentPlatform.getServerGBId());
- offline(parentPlatform, false);
- }
-
- }else {
+ if (eventResult.type != SipSubscribe.EventResultType.timeout) {
logger.warn("[鍥芥爣绾ц仈]鍙戦�佸績璺虫敹鍒伴敊璇紝code锛� {}, msg: {}", eventResult.statusCode, eventResult.msg);
+ }
+ // 蹇冭烦澶辫触
+ ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId());
+ // 姝ゆ椂鏄涓夋蹇冭烦瓒呮椂锛� 骞冲彴绂荤嚎
+ if (platformCatch.getKeepAliveReply() == 2) {
+ // 璁剧疆骞冲彴绂荤嚎锛屽苟閲嶆柊娉ㄥ唽
+ logger.info("[鍥芥爣绾ц仈] 涓夋蹇冭烦澶辫触, 骞冲彴{}({})绂荤嚎", parentPlatform.getName(), parentPlatform.getServerGBId());
+ offline(parentPlatform, false);
+ }else {
+ platformCatch.setKeepAliveReply(platformCatch.getKeepAliveReply() + 1);
+ redisCatchStorage.updatePlatformCatchInfo(platformCatch);
}
}, eventResult -> {
@@ -256,6 +264,31 @@
},
(parentPlatform.getKeepTimeout())*1000);
}
+ if (parentPlatform.isAutoPushChannel()) {
+ if (subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId()) == null) {
+ addSimulatedSubscribeInfo(parentPlatform);
+ }
+ }else {
+ SubscribeInfo catalogSubscribe = subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId());
+ if (catalogSubscribe != null && catalogSubscribe.getExpires() == -1) {
+ subscribeHolder.removeCatalogSubscribe(parentPlatform.getServerGBId());
+ }
+ }
+ }
+
+ @Override
+ public void addSimulatedSubscribeInfo(ParentPlatform parentPlatform) {
+ // 鑷姩娣诲姞涓�鏉℃ā鎷熺殑璁㈤槄淇℃伅
+ SubscribeInfo subscribeInfo = new SubscribeInfo();
+ subscribeInfo.setId(parentPlatform.getServerGBId());
+ subscribeInfo.setExpires(-1);
+ subscribeInfo.setEventType("Catalog");
+ int random = (int) Math.floor(Math.random() * 10000);
+ subscribeInfo.setEventId(random + "");
+ subscribeInfo.setSimulatedCallId(UUID.randomUUID().toString().replace("-", "") + "@" + parentPlatform.getServerIP());
+ subscribeInfo.setSimulatedFromTag(UUID.randomUUID().toString().replace("-", ""));
+ subscribeInfo.setSimulatedToTag(UUID.randomUUID().toString().replace("-", ""));
+ subscribeHolder.putCatalogSubscribe(parentPlatform.getServerGBId(), subscribeInfo);
}
private void registerTask(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo){
@@ -276,7 +309,7 @@
eventResult.statusCode, eventResult.msg);
offline(parentPlatform, false);
}, null);
- } catch (InvalidArgumentException | ParseException | SipException e) {
+ } catch (Exception e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈瀹氭椂娉ㄥ唽: {}", e.getMessage());
}
}
--
Gitblit v1.8.0