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,9 +26,10 @@ public class DynamicTask { | ||
| 26 | return new ThreadPoolTaskScheduler(); | 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 | stopCron(key); | 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 | futureMap.put(key, future); | 33 | futureMap.put(key, future); |
| 33 | return "startCron"; | 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,18 +143,15 @@ public class SIPProcessorObserver implements SipListener { | ||
| 143 | 143 | ||
| 144 | @Override | 144 | @Override |
| 145 | public void processIOException(IOExceptionEvent exceptionEvent) { | 145 | public void processIOException(IOExceptionEvent exceptionEvent) { |
| 146 | -// System.out.println("processIOException"); | ||
| 147 | } | 146 | } |
| 148 | 147 | ||
| 149 | @Override | 148 | @Override |
| 150 | public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) { | 149 | public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) { |
| 151 | -// System.out.println("processTransactionTerminated"); | ||
| 152 | } | 150 | } |
| 153 | 151 | ||
| 154 | @Override | 152 | @Override |
| 155 | public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) { | 153 | public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) { |
| 156 | CallIdHeader callId = dialogTerminatedEvent.getDialog().getCallId(); | 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,6 +204,7 @@ public class SIPRequestHeaderProvider { | ||
| 204 | 204 | ||
| 205 | // Event | 205 | // Event |
| 206 | EventHeader eventHeader = sipFactory.createHeaderFactory().createEventHeader(event); | 206 | EventHeader eventHeader = sipFactory.createHeaderFactory().createEventHeader(event); |
| 207 | + eventHeader.setEventType("Catalog"); | ||
| 207 | request.addHeader(eventHeader); | 208 | request.addHeader(eventHeader); |
| 208 | 209 | ||
| 209 | ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "MANSCDP+xml"); | 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,7 +1486,7 @@ public class SIPCommander implements ISIPCommander { | ||
| 1486 | StringBuffer cmdXml = new StringBuffer(200); | 1486 | StringBuffer cmdXml = new StringBuffer(200); |
| 1487 | cmdXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n"); | 1487 | cmdXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n"); |
| 1488 | cmdXml.append("<Query>\r\n"); | 1488 | cmdXml.append("<Query>\r\n"); |
| 1489 | - cmdXml.append("<CmdType>CataLog</CmdType>\r\n"); | 1489 | + cmdXml.append("<CmdType>Catalog</CmdType>\r\n"); |
| 1490 | cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); | 1490 | cmdXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); |
| 1491 | cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); | 1491 | cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); |
| 1492 | cmdXml.append("</Query>\r\n"); | 1492 | cmdXml.append("</Query>\r\n"); |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/ByeResponseProcessor.java
| @@ -42,7 +42,6 @@ public class ByeResponseProcessor extends SIPResponseProcessorAbstract { | @@ -42,7 +42,6 @@ public class ByeResponseProcessor extends SIPResponseProcessorAbstract { | ||
| 42 | @Override | 42 | @Override |
| 43 | public void process(ResponseEvent evt) { | 43 | public void process(ResponseEvent evt) { |
| 44 | // TODO Auto-generated method stub | 44 | // TODO Auto-generated method stub |
| 45 | - System.out.println("收到bye"); | ||
| 46 | } | 45 | } |
| 47 | 46 | ||
| 48 | 47 |
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
| @@ -10,6 +10,9 @@ import org.slf4j.LoggerFactory; | @@ -10,6 +10,9 @@ import org.slf4j.LoggerFactory; | ||
| 10 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| 11 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
| 12 | 12 | ||
| 13 | +/** | ||
| 14 | + * 设备业务(目录订阅) | ||
| 15 | + */ | ||
| 13 | @Service | 16 | @Service |
| 14 | public class DeviceServiceImpl implements IDeviceService { | 17 | public class DeviceServiceImpl implements IDeviceService { |
| 15 | 18 | ||
| @@ -31,9 +34,10 @@ public class DeviceServiceImpl implements IDeviceService { | @@ -31,9 +34,10 @@ public class DeviceServiceImpl implements IDeviceService { | ||
| 31 | CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander); | 34 | CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander); |
| 32 | catalogSubscribeTask.run(); | 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 | return true; | 41 | return true; |
| 38 | } | 42 | } |
| 39 | 43 | ||
| @@ -42,21 +46,10 @@ public class DeviceServiceImpl implements IDeviceService { | @@ -42,21 +46,10 @@ public class DeviceServiceImpl implements IDeviceService { | ||
| 42 | if (device == null || device.getSubscribeCycleForCatalog() < 0) { | 46 | if (device == null || device.getSubscribeCycleForCatalog() < 0) { |
| 43 | return false; | 47 | return false; |
| 44 | } | 48 | } |
| 49 | + logger.info("移除目录订阅【{}】", device.getDeviceId()); | ||
| 45 | dynamicTask.stopCron(device.getDeviceId()); | 50 | dynamicTask.stopCron(device.getDeviceId()); |
| 51 | + device.setSubscribeCycleForCatalog(0); | ||
| 52 | + sipCommander.catalogSubscribe(device, null, null); | ||
| 46 | return true; | 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 | } |