mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-06 06:06:08 +08:00
调整订阅周期处理和任务创建逻辑
This commit is contained in:
parent
85c7ec3d3e
commit
383081f244
@ -1080,11 +1080,11 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner {
|
||||
return;
|
||||
}
|
||||
if (cycle > 0) {
|
||||
// 目录订阅相关的信息
|
||||
// 报警订阅相关的信息
|
||||
if (device.getSubscribeCycleForAlarm() > 0) {
|
||||
// 订阅周期不同,则先取消
|
||||
removeAlarmSubscribe(device, result->{
|
||||
device.setSubscribeCycleForCatalog(cycle);
|
||||
device.setSubscribeCycleForAlarm(cycle);
|
||||
updateDevice(device);
|
||||
// 开启订阅
|
||||
addAlarmSubscribe(device, null);
|
||||
|
||||
@ -12,15 +12,15 @@ public class SubscribeTaskForAlarm extends SubscribeTask {
|
||||
public static final String name = "alarm";
|
||||
|
||||
public static SubscribeTask getInstance(Device device, SubscribeCallback callback, SipTransactionInfo transactionInfo) {
|
||||
if (device.getSubscribeCycleForCatalog() <= 0) {
|
||||
if (device.getSubscribeCycleForAlarm() <= 0) {
|
||||
return null;
|
||||
}
|
||||
SubscribeTaskForAlarm subscribeTaskForCatalog = new SubscribeTaskForAlarm();
|
||||
subscribeTaskForCatalog.setDelayTime((device.getSubscribeCycleForCatalog() * 1000L - 500L) + System.currentTimeMillis());
|
||||
subscribeTaskForCatalog.setDeviceId(device.getDeviceId());
|
||||
subscribeTaskForCatalog.setCallback(callback);
|
||||
subscribeTaskForCatalog.setTransactionInfo(transactionInfo);
|
||||
return subscribeTaskForCatalog;
|
||||
SubscribeTaskForAlarm subscribeTaskForAlarm = new SubscribeTaskForAlarm();
|
||||
subscribeTaskForAlarm.setDelayTime((device.getSubscribeCycleForAlarm() * 1000L - 500L) + System.currentTimeMillis());
|
||||
subscribeTaskForAlarm.setDeviceId(device.getDeviceId());
|
||||
subscribeTaskForAlarm.setCallback(callback);
|
||||
subscribeTaskForAlarm.setTransactionInfo(transactionInfo);
|
||||
return subscribeTaskForAlarm;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -41,7 +41,6 @@ import javax.sip.SipFactory;
|
||||
import javax.sip.header.CallIdHeader;
|
||||
import javax.sip.message.Request;
|
||||
import java.text.ParseException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -1231,17 +1230,17 @@ public class SIPCommander implements ISIPCommander {
|
||||
cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
|
||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||
cmdXml.append("<StartAlarmPriority>1</StartAlarmPriority>\r\n");
|
||||
cmdXml.append("<EndAlarmPriority>4/EndAlarmPriority>\r\n");
|
||||
cmdXml.append("<AlarmMethod>0</AlarmMethod>\r\n");
|
||||
|
||||
LocalDateTime nowDateTime = LocalDateTime.now();
|
||||
String startTime = DateUtil.formatterISO8601.format(nowDateTime);
|
||||
// 退后一个月作为结束时间
|
||||
String endTime = DateUtil.formatterISO8601.format(nowDateTime.plusMonths(1));
|
||||
|
||||
cmdXml.append("<StartTime>" + startTime + "</StartTime>\r\n");
|
||||
cmdXml.append("<EndTime>" + endTime + "</EndTime>\r\n");
|
||||
// cmdXml.append("<StartAlarmPriority>1</StartAlarmPriority>\r\n");
|
||||
// cmdXml.append("<EndAlarmPriority>4/EndAlarmPriority>\r\n");
|
||||
// cmdXml.append("<AlarmMethod>0</AlarmMethod>\r\n");
|
||||
//
|
||||
// LocalDateTime nowDateTime = LocalDateTime.now();
|
||||
// String startTime = DateUtil.formatterISO8601.format(nowDateTime);
|
||||
// // 退后一个月作为结束时间
|
||||
// String endTime = DateUtil.formatterISO8601.format(nowDateTime.plusMonths(1));
|
||||
//
|
||||
// cmdXml.append("<StartTime>" + startTime + "</StartTime>\r\n");
|
||||
// cmdXml.append("<EndTime>" + endTime + "</EndTime>\r\n");
|
||||
|
||||
cmdXml.append("</Query>\r\n");
|
||||
|
||||
@ -1253,14 +1252,14 @@ public class SIPCommander implements ISIPCommander {
|
||||
callIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport());
|
||||
}
|
||||
|
||||
int subscribeCycleForCatalog = device.getSubscribeCycleForCatalog();
|
||||
if (subscribeCycleForCatalog > 0) {
|
||||
int subscribeCycleForAlarm = device.getSubscribeCycleForAlarm();
|
||||
if (subscribeCycleForAlarm > 0) {
|
||||
// 目录订阅有效期不小于 30 秒
|
||||
subscribeCycleForCatalog = Math.max(subscribeCycleForCatalog, 30);
|
||||
subscribeCycleForAlarm = Math.max(subscribeCycleForAlarm, 30);
|
||||
}
|
||||
|
||||
// 有效时间默认为60秒以上
|
||||
SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), sipTransactionInfo, subscribeCycleForCatalog, "presence",
|
||||
SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), sipTransactionInfo, subscribeCycleForAlarm, "presence",
|
||||
callIdHeader);
|
||||
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent);
|
||||
return request;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user