648540858
2022-09-23 cd117ed22825b8f442e0f2281678f4549be3e109
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
@@ -87,16 +87,24 @@
    public void handForDevice(RequestEvent evt, Device device, Element element) {
        taskQueue.offer(new HandlerCatchData(evt, device, element));
        // 回复200 OK
        try {
            ServerTransaction serverTransaction = getServerTransaction(evt);
        try {
            responseAck(serverTransaction, Response.OK);
        } catch (SipException | InvalidArgumentException | ParseException e) {
            logger.error("[命令发送失败] 目录查询回复: {}", e.getMessage());
        }
            if (!taskQueueHandlerRun) {
                taskQueueHandlerRun = true;
                taskExecutor.execute(()-> {
                    while (!taskQueue.isEmpty()) {
                        HandlerCatchData take = taskQueue.poll();
                    Element rootElement = null;
                        try {
                            Element rootElement = getRootElement(take.getEvt(), take.getDevice().getCharset());
                        rootElement = getRootElement(take.getEvt(), take.getDevice().getCharset());
                    } catch (DocumentException e) {
                        logger.error("[xml解析] 失败: ", e);
                        continue;
                    }
                            if (rootElement == null) {
                                logger.warn("[ 收到通道 ] content cannot be null, {}", evt.getRequest());
                                continue;
@@ -104,10 +112,6 @@
                            Element deviceListElement = rootElement.element("DeviceList");
                            Element sumNumElement = rootElement.element("SumNum");
                            Element snElement = rootElement.element("SN");
                            if (snElement == null || sumNumElement == null || deviceListElement == null) {
                                responseAck(serverTransaction, Response.BAD_REQUEST, "xml error");
                                continue;
                            }
                            int sumNum = Integer.parseInt(sumNumElement.getText());
                            if (sumNum == 0) {
@@ -148,28 +152,8 @@
                                }
                            }
                        } catch (DocumentException e) {
                            e.printStackTrace();
                        } catch (InvalidArgumentException e) {
                            e.printStackTrace();
                        } catch (ParseException e) {
                            e.printStackTrace();
                        } catch (SipException e) {
                            e.printStackTrace();
                        } finally {
                            taskQueueHandlerRun = false;
                        }
                    }
                });
            }
        } catch (SipException e) {
            throw new RuntimeException(e);
        } catch (InvalidArgumentException e) {
            throw new RuntimeException(e);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        } finally {
            taskQueueHandlerRun = false;
        }
    }