648540858
2022-11-21 6b03568c5dd128a3d71c02fb1a3a76a4344a4920
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -1,6 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.*;
@@ -11,7 +11,6 @@
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
@@ -20,6 +19,7 @@
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -34,7 +34,6 @@
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.header.FromHeader;
import javax.sip.message.Response;
@@ -94,12 +93,15 @@
   @Override
   public void process(RequestEvent evt) {
      try {
         taskQueue.offer(new HandlerCatchData(evt, null, null));
         ServerTransaction serverTransaction = getServerTransaction(evt);
         responseAck(serverTransaction, Response.OK);
         if (!taskQueueHandlerRun) {
            taskQueueHandlerRun = true;
            taskExecutor.execute(()-> {
         responseAck((SIPRequest) evt.getRequest(), Response.OK, null, null);
      }catch (SipException | InvalidArgumentException | ParseException e) {
         e.printStackTrace();
      }
      taskQueue.offer(new HandlerCatchData(evt, null, null));
      if (!taskQueueHandlerRun) {
         taskQueueHandlerRun = true;
         taskExecutor.execute(()-> {
            try {
               while (!taskQueue.isEmpty()) {
                  try {
                     HandlerCatchData take = taskQueue.poll();
@@ -126,13 +128,12 @@
                     logger.error("处理NOTIFY消息时错误", e);
                  }
               }
            }catch (Exception e) {
               logger.error("处理NOTIFY消息时错误", e);
            }finally {
               taskQueueHandlerRun = false;
            });
         }
      } catch (SipException | InvalidArgumentException | ParseException e) {
         e.printStackTrace();
      } finally {
         taskQueueHandlerRun = false;
            }
         });
      }
   }