修复多个推流推送到上级是不完整的问题,修改平台注销时不删除自己模拟的订阅信息
parent
29f7a6b6eb
commit
2b2efb59a6
|
@ -148,13 +148,13 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> {
|
||||||
if (event.getDeviceChannels() != null) {
|
if (event.getDeviceChannels() != null) {
|
||||||
deviceChannelList.addAll(event.getDeviceChannels());
|
deviceChannelList.addAll(event.getDeviceChannels());
|
||||||
}
|
}
|
||||||
if (event.getGbStreams() != null && event.getGbStreams().size() > 0){
|
if (event.getGbStreams() != null && !event.getGbStreams().isEmpty()){
|
||||||
for (GbStream gbStream : event.getGbStreams()) {
|
for (GbStream gbStream : event.getGbStreams()) {
|
||||||
deviceChannelList.add(
|
deviceChannelList.add(
|
||||||
gbStreamService.getDeviceChannelListByStreamWithStatus(gbStream, gbStream.getCatalogId(), parentPlatform));
|
gbStreamService.getDeviceChannelListByStreamWithStatus(gbStream, gbStream.getCatalogId(), parentPlatform));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (deviceChannelList.size() > 0) {
|
if (!deviceChannelList.isEmpty()) {
|
||||||
logger.info("[Catalog事件: {}]平台:{},影响通道{}个", event.getType(), event.getPlatformId(), deviceChannelList.size());
|
logger.info("[Catalog事件: {}]平台:{},影响通道{}个", event.getType(), event.getPlatformId(), deviceChannelList.size());
|
||||||
try {
|
try {
|
||||||
sipCommanderFroPlatform.sendNotifyForCatalogAddOrUpdate(event.getType(), parentPlatform, deviceChannelList, subscribe, null);
|
sipCommanderFroPlatform.sendNotifyForCatalogAddOrUpdate(event.getType(), parentPlatform, deviceChannelList, subscribe, null);
|
||||||
|
@ -163,10 +163,10 @@ public class CatalogEventLister implements ApplicationListener<CatalogEvent> {
|
||||||
logger.error("[命令发送失败] 国标级联 Catalog通知: {}", e.getMessage());
|
logger.error("[命令发送失败] 国标级联 Catalog通知: {}", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else if (parentPlatformMap.keySet().size() > 0) {
|
}else if (!parentPlatformMap.keySet().isEmpty()) {
|
||||||
for (String gbId : parentPlatformMap.keySet()) {
|
for (String gbId : parentPlatformMap.keySet()) {
|
||||||
List<ParentPlatform> parentPlatforms = parentPlatformMap.get(gbId);
|
List<ParentPlatform> parentPlatforms = parentPlatformMap.get(gbId);
|
||||||
if (parentPlatforms != null && parentPlatforms.size() > 0) {
|
if (parentPlatforms != null && !parentPlatforms.isEmpty()) {
|
||||||
for (ParentPlatform platform : parentPlatforms) {
|
for (ParentPlatform platform : parentPlatforms) {
|
||||||
SubscribeInfo subscribeInfo = subscribeHolder.getCatalogSubscribe(platform.getServerGBId());
|
SubscribeInfo subscribeInfo = subscribeHolder.getCatalogSubscribe(platform.getServerGBId());
|
||||||
if (subscribeInfo == null) {
|
if (subscribeInfo == null) {
|
||||||
|
|
|
@ -557,7 +557,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendNotifyForCatalogAddOrUpdate(String type, ParentPlatform parentPlatform, List<DeviceChannel> deviceChannels, SubscribeInfo subscribeInfo, Integer index) throws InvalidArgumentException, ParseException, NoSuchFieldException, SipException, IllegalAccessException {
|
public void sendNotifyForCatalogAddOrUpdate(String type, ParentPlatform parentPlatform, List<DeviceChannel> deviceChannels, SubscribeInfo subscribeInfo, Integer index) throws InvalidArgumentException, ParseException, NoSuchFieldException, SipException, IllegalAccessException {
|
||||||
if (parentPlatform == null || deviceChannels == null || deviceChannels.size() == 0 || subscribeInfo == null) {
|
if (parentPlatform == null || deviceChannels == null || deviceChannels.isEmpty() || subscribeInfo == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (index == null) {
|
if (index == null) {
|
||||||
|
@ -575,6 +575,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
||||||
Integer finalIndex = index;
|
Integer finalIndex = index;
|
||||||
String catalogXmlContent = getCatalogXmlContentForCatalogAddOrUpdate(parentPlatform, channels,
|
String catalogXmlContent = getCatalogXmlContentForCatalogAddOrUpdate(parentPlatform, channels,
|
||||||
deviceChannels.size(), type, subscribeInfo);
|
deviceChannels.size(), type, subscribeInfo);
|
||||||
|
logger.info("[发送NOTIFY通知]类型: {},发送数量: {}", type, channels.size());
|
||||||
sendNotify(parentPlatform, catalogXmlContent, subscribeInfo, eventResult -> {
|
sendNotify(parentPlatform, catalogXmlContent, subscribeInfo, eventResult -> {
|
||||||
logger.error("发送NOTIFY通知消息失败。错误:{} {}", eventResult.statusCode, eventResult.msg);
|
logger.error("发送NOTIFY通知消息失败。错误:{} {}", eventResult.statusCode, eventResult.msg);
|
||||||
}, (eventResult -> {
|
}, (eventResult -> {
|
||||||
|
@ -610,9 +611,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
||||||
.append("<CmdType>Catalog</CmdType>\r\n")
|
.append("<CmdType>Catalog</CmdType>\r\n")
|
||||||
.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n")
|
.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n")
|
||||||
.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n")
|
.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n")
|
||||||
.append("<SumNum>"+ channels.size() +"</SumNum>\r\n")
|
.append("<SumNum>"+ sumNum +"</SumNum>\r\n")
|
||||||
.append("<DeviceList Num=\"" + channels.size() + "\">\r\n");
|
.append("<DeviceList Num=\"" + channels.size() + "\">\r\n");
|
||||||
if (channels.size() > 0) {
|
if (!channels.isEmpty()) {
|
||||||
for (DeviceChannel channel : channels) {
|
for (DeviceChannel channel : channels) {
|
||||||
if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
|
if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
|
||||||
channel.setParentId(parentPlatform.getDeviceGBId());
|
channel.setParentId(parentPlatform.getDeviceGBId());
|
||||||
|
|
|
@ -266,6 +266,7 @@ public class PlatformServiceImpl implements IPlatformService {
|
||||||
}
|
}
|
||||||
if (parentPlatform.isAutoPushChannel()) {
|
if (parentPlatform.isAutoPushChannel()) {
|
||||||
if (subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId()) == null) {
|
if (subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId()) == null) {
|
||||||
|
logger.info("[国标级联]:{}, 添加自动通道推送模拟订阅信息", parentPlatform.getServerGBId());
|
||||||
addSimulatedSubscribeInfo(parentPlatform);
|
addSimulatedSubscribeInfo(parentPlatform);
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
|
@ -343,9 +344,16 @@ public class PlatformServiceImpl implements IPlatformService {
|
||||||
// 清除心跳任务
|
// 清除心跳任务
|
||||||
dynamicTask.stop(keepaliveTaskKey);
|
dynamicTask.stop(keepaliveTaskKey);
|
||||||
}
|
}
|
||||||
// 停止目录订阅回复
|
// 停止订阅回复
|
||||||
logger.info("[平台离线] {}, 停止订阅回复", parentPlatform.getServerGBId());
|
SubscribeInfo catalogSubscribe = subscribeHolder.getCatalogSubscribe(parentPlatform.getServerGBId());
|
||||||
subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId());
|
if (catalogSubscribe != null) {
|
||||||
|
if (catalogSubscribe.getExpires() > 0) {
|
||||||
|
logger.info("[平台离线] {}, 停止目录订阅回复", parentPlatform.getServerGBId());
|
||||||
|
subscribeHolder.removeCatalogSubscribe(parentPlatform.getServerGBId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger.info("[平台离线] {}, 停止移动位置订阅回复", parentPlatform.getServerGBId());
|
||||||
|
subscribeHolder.removeMobilePositionSubscribe(parentPlatform.getServerGBId());
|
||||||
// 发起定时自动重新注册
|
// 发起定时自动重新注册
|
||||||
if (!stopRegister) {
|
if (!stopRegister) {
|
||||||
// 设置为60秒自动尝试重新注册
|
// 设置为60秒自动尝试重新注册
|
||||||
|
|
Loading…
Reference in New Issue