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