Commit 2b2efb59a61a54b398f8f6c9263f37d41c18e65c
1 parent
29f7a6b6
修复多个推流推送到上级是不完整的问题,修改平台注销时不删除自己模拟的订阅信息
Showing
3 changed files
with
19 additions
and
10 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
| ... | ... | @@ -148,13 +148,13 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> { |
| 148 | 148 | if (event.getDeviceChannels() != null) { |
| 149 | 149 | deviceChannelList.addAll(event.getDeviceChannels()); |
| 150 | 150 | } |
| 151 | - if (event.getGbStreams() != null && event.getGbStreams().size() > 0){ | |
| 151 | + if (event.getGbStreams() != null && !event.getGbStreams().isEmpty()){ | |
| 152 | 152 | for (GbStream gbStream : event.getGbStreams()) { |
| 153 | 153 | deviceChannelList.add( |
| 154 | 154 | gbStreamService.getDeviceChannelListByStreamWithStatus(gbStream, gbStream.getCatalogId(), parentPlatform)); |
| 155 | 155 | } |
| 156 | 156 | } |
| 157 | - if (deviceChannelList.size() > 0) { | |
| 157 | + if (!deviceChannelList.isEmpty()) { | |
| 158 | 158 | logger.info("[Catalog事件: {}]平台:{},影响通道{}个", event.getType(), event.getPlatformId(), deviceChannelList.size()); |
| 159 | 159 | try { |
| 160 | 160 | sipCommanderFroPlatform.sendNotifyForCatalogAddOrUpdate(event.getType(), parentPlatform, deviceChannelList, subscribe, null); |
| ... | ... | @@ -163,10 +163,10 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> { |
| 163 | 163 | logger.error("[命令发送失败] 国标级联 Catalog通知: {}", e.getMessage()); |
| 164 | 164 | } |
| 165 | 165 | } |
| 166 | - }else if (parentPlatformMap.keySet().size() > 0) { | |
| 166 | + }else if (!parentPlatformMap.keySet().isEmpty()) { | |
| 167 | 167 | for (String gbId : parentPlatformMap.keySet()) { |
| 168 | 168 | List<ParentPlatform> parentPlatforms = parentPlatformMap.get(gbId); |
| 169 | - if (parentPlatforms != null && parentPlatforms.size() > 0) { | |
| 169 | + if (parentPlatforms != null && !parentPlatforms.isEmpty()) { | |
| 170 | 170 | for (ParentPlatform platform : parentPlatforms) { |
| 171 | 171 | SubscribeInfo subscribeInfo = subscribeHolder.getCatalogSubscribe(platform.getServerGBId()); |
| 172 | 172 | if (subscribeInfo == null) { | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
| ... | ... | @@ -557,7 +557,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { |
| 557 | 557 | |
| 558 | 558 | @Override |
| 559 | 559 | public void sendNotifyForCatalogAddOrUpdate(String type, ParentPlatform parentPlatform, List<DeviceChannel> deviceChannels, SubscribeInfo subscribeInfo, Integer index) throws InvalidArgumentException, ParseException, NoSuchFieldException, SipException, IllegalAccessException { |
| 560 | - if (parentPlatform == null || deviceChannels == null || deviceChannels.size() == 0 || subscribeInfo == null) { | |
| 560 | + if (parentPlatform == null || deviceChannels == null || deviceChannels.isEmpty() || subscribeInfo == null) { | |
| 561 | 561 | return; |
| 562 | 562 | } |
| 563 | 563 | if (index == null) { |
| ... | ... | @@ -575,6 +575,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { |
| 575 | 575 | Integer finalIndex = index; |
| 576 | 576 | String catalogXmlContent = getCatalogXmlContentForCatalogAddOrUpdate(parentPlatform, channels, |
| 577 | 577 | deviceChannels.size(), type, subscribeInfo); |
| 578 | + logger.info("[发送NOTIFY通知]类型: {},发送数量: {}", type, channels.size()); | |
| 578 | 579 | sendNotify(parentPlatform, catalogXmlContent, subscribeInfo, eventResult -> { |
| 579 | 580 | logger.error("发送NOTIFY通知消息失败。错误:{} {}", eventResult.statusCode, eventResult.msg); |
| 580 | 581 | }, (eventResult -> { |
| ... | ... | @@ -610,9 +611,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { |
| 610 | 611 | .append("<CmdType>Catalog</CmdType>\r\n") |
| 611 | 612 | .append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n") |
| 612 | 613 | .append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n") |
| 613 | - .append("<SumNum>"+ channels.size() +"</SumNum>\r\n") | |
| 614 | + .append("<SumNum>"+ sumNum +"</SumNum>\r\n") | |
| 614 | 615 | .append("<DeviceList Num=\"" + channels.size() + "\">\r\n"); |
| 615 | - if (channels.size() > 0) { | |
| 616 | + if (!channels.isEmpty()) { | |
| 616 | 617 | for (DeviceChannel channel : channels) { |
| 617 | 618 | if (parentPlatform.getServerGBId().equals(channel.getParentId())) { |
| 618 | 619 | channel.setParentId(parentPlatform.getDeviceGBId()); | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
| ... | ... | @@ -266,6 +266,7 @@ public class PlatformServiceImpl implements IPlatformService { |
| 266 | 266 | } |
| 267 | 267 | if (parentPlatform.isAutoPushChannel()) { |
| 268 | 268 | if (subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId()) == null) { |
| 269 | + logger.info("[国标级联]:{}, 添加自动通道推送模拟订阅信息", parentPlatform.getServerGBId()); | |
| 269 | 270 | addSimulatedSubscribeInfo(parentPlatform); |
| 270 | 271 | } |
| 271 | 272 | }else { |
| ... | ... | @@ -343,9 +344,16 @@ public class PlatformServiceImpl implements IPlatformService { |
| 343 | 344 | // 清除心跳任务 |
| 344 | 345 | dynamicTask.stop(keepaliveTaskKey); |
| 345 | 346 | } |
| 346 | - // 停止目录订阅回复 | |
| 347 | - logger.info("[平台离线] {}, 停止订阅回复", parentPlatform.getServerGBId()); | |
| 348 | - subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId()); | |
| 347 | + // 停止订阅回复 | |
| 348 | + SubscribeInfo catalogSubscribe = subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId()); | |
| 349 | + if (catalogSubscribe != null) { | |
| 350 | + if (catalogSubscribe.getExpires() > 0) { | |
| 351 | + logger.info("[平台离线] {}, 停止目录订阅回复", parentPlatform.getServerGBId()); | |
| 352 | + subscribeHolder.removeCatalogSubscribe(parentPlatform.getServerGBId()); | |
| 353 | + } | |
| 354 | + } | |
| 355 | + logger.info("[平台离线] {}, 停止移动位置订阅回复", parentPlatform.getServerGBId()); | |
| 356 | + subscribeHolder.removeMobilePositionSubscribe(parentPlatform.getServerGBId()); | |
| 349 | 357 | // 发起定时自动重新注册 |
| 350 | 358 | if (!stopRegister) { |
| 351 | 359 | // 设置为60秒自动尝试重新注册 | ... | ... |