Commit 5d5e5a164fbaa4ee386b8e54f3d13779656808c1
1 parent
c49f6f83
修复目录订阅的定时刷新以及信令
Showing
6 changed files
with
15 additions
and
24 deletions
src/main/java/com/genersoft/iot/vmp/conf/DynamicTask.java
| ... | ... | @@ -26,9 +26,10 @@ public class DynamicTask { |
| 26 | 26 | return new ThreadPoolTaskScheduler(); |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | - public String startCron(String key, Runnable task, String corn) { | |
| 29 | + public String startCron(String key, Runnable task, int cycleForCatalog) { | |
| 30 | 30 | stopCron(key); |
| 31 | - ScheduledFuture future = threadPoolTaskScheduler.schedule(task, new CronTrigger(corn)); | |
| 31 | + // scheduleWithFixedDelay 必须等待上一个任务结束才开始计时period, cycleForCatalog表示执行的间隔 | |
| 32 | + ScheduledFuture future = threadPoolTaskScheduler.scheduleWithFixedDelay(task, cycleForCatalog * 1000L); | |
| 32 | 33 | futureMap.put(key, future); |
| 33 | 34 | return "startCron"; |
| 34 | 35 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
| ... | ... | @@ -143,18 +143,15 @@ public class SIPProcessorObserver implements SipListener { |
| 143 | 143 | |
| 144 | 144 | @Override |
| 145 | 145 | public void processIOException(IOExceptionEvent exceptionEvent) { |
| 146 | -// System.out.println("processIOException"); | |
| 147 | 146 | } |
| 148 | 147 | |
| 149 | 148 | @Override |
| 150 | 149 | public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) { |
| 151 | -// System.out.println("processTransactionTerminated"); | |
| 152 | 150 | } |
| 153 | 151 | |
| 154 | 152 | @Override |
| 155 | 153 | public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) { |
| 156 | 154 | CallIdHeader callId = dialogTerminatedEvent.getDialog().getCallId(); |
| 157 | - System.out.println("processDialogTerminated:::::" + callId); | |
| 158 | 155 | } |
| 159 | 156 | |
| 160 | 157 | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
| ... | ... | @@ -204,6 +204,7 @@ public class SIPRequestHeaderProvider { |
| 204 | 204 | |
| 205 | 205 | // Event |
| 206 | 206 | EventHeader eventHeader = sipFactory.createHeaderFactory().createEventHeader(event); |
| 207 | + eventHeader.setEventType("Catalog"); | |
| 207 | 208 | request.addHeader(eventHeader); |
| 208 | 209 | |
| 209 | 210 | ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "MANSCDP+xml"); | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
| ... | ... | @@ -1486,7 +1486,7 @@ public class SIPCommander implements ISIPCommander { |
| 1486 | 1486 | StringBuffer cmdXml = new StringBuffer(200); |
| 1487 | 1487 | cmdXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n"); |
| 1488 | 1488 | cmdXml.append("<Query>\r\n"); |
| 1489 | - cmdXml.append("<CmdType>CataLog</CmdType>\r\n"); | |
| 1489 | + cmdXml.append("<CmdType>Catalog</CmdType>\r\n"); | |
| 1490 | 1490 | cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); |
| 1491 | 1491 | cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); |
| 1492 | 1492 | cmdXml.append("</Query>\r\n"); | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/ByeResponseProcessor.java
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
| ... | ... | @@ -10,6 +10,9 @@ import org.slf4j.LoggerFactory; |
| 10 | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| 11 | 11 | import org.springframework.stereotype.Service; |
| 12 | 12 | |
| 13 | +/** | |
| 14 | + * 设备业务(目录订阅) | |
| 15 | + */ | |
| 13 | 16 | @Service |
| 14 | 17 | public class DeviceServiceImpl implements IDeviceService { |
| 15 | 18 | |
| ... | ... | @@ -31,9 +34,10 @@ public class DeviceServiceImpl implements IDeviceService { |
| 31 | 34 | CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander); |
| 32 | 35 | catalogSubscribeTask.run(); |
| 33 | 36 | // 提前开始刷新订阅 |
| 34 | - // TODO 暂时关闭目录订阅的定时刷新,直到此功能完善 | |
| 35 | -// String cron = getCron(device.getSubscribeCycleForCatalog() - 60); | |
| 36 | -// dynamicTask.startCron(device.getDeviceId(), catalogSubscribeTask, cron); | |
| 37 | + int subscribeCycleForCatalog = device.getSubscribeCycleForCatalog(); | |
| 38 | + // 设置最小值为30 | |
| 39 | + subscribeCycleForCatalog = Math.max(subscribeCycleForCatalog, 30); | |
| 40 | + dynamicTask.startCron(device.getDeviceId(), catalogSubscribeTask, subscribeCycleForCatalog - 5); | |
| 37 | 41 | return true; |
| 38 | 42 | } |
| 39 | 43 | |
| ... | ... | @@ -42,21 +46,10 @@ public class DeviceServiceImpl implements IDeviceService { |
| 42 | 46 | if (device == null || device.getSubscribeCycleForCatalog() < 0) { |
| 43 | 47 | return false; |
| 44 | 48 | } |
| 49 | + logger.info("移除目录订阅【{}】", device.getDeviceId()); | |
| 45 | 50 | dynamicTask.stopCron(device.getDeviceId()); |
| 51 | + device.setSubscribeCycleForCatalog(0); | |
| 52 | + sipCommander.catalogSubscribe(device, null, null); | |
| 46 | 53 | return true; |
| 47 | 54 | } |
| 48 | - | |
| 49 | - public String getCron(int time) { | |
| 50 | - if (time <= 59) { | |
| 51 | - return "0/" + time +" * * * * ?"; | |
| 52 | - }else if (time <= 60* 59) { | |
| 53 | - int minute = time/(60); | |
| 54 | - return "0 0/" + minute +" * * * ?"; | |
| 55 | - }else if (time <= 60* 60* 59) { | |
| 56 | - int hour = time/(60*60); | |
| 57 | - return "0 0 0/" + hour +" * * ?"; | |
| 58 | - }else { | |
| 59 | - return "0 0/10 * * * ?"; | |
| 60 | - } | |
| 61 | - } | |
| 62 | 55 | } | ... | ... |