xiaoxie
2022-05-23 d739bfa5976e36ced26f906ab16f83c20c8cb27c
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -252,14 +252,12 @@
         FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
         String deviceId = SipUtils.getUserIdFromFromHeader(fromHeader);
         Element rootElement = getRootElement(evt);
         Device device = redisCatchStorage.getDevice(deviceId);
         if (device == null) {
         if (device == null || device.getOnline() == 0) {
            logger.warn("[收到 目录订阅]:{}, 但是设备已经离线", (device != null ? device.getDeviceId():"" ));
            return;
         }
         if (device != null ) {
            rootElement = getRootElement(evt, device.getCharset());
         }
         Element rootElement = getRootElement(evt, device.getCharset());
         Element deviceListElement = rootElement.element("DeviceList");
         if (deviceListElement == null) {
            return;
@@ -279,39 +277,46 @@
               channel.setDeviceId(device.getDeviceId());
               logger.info("[收到 目录订阅]:{}/{}", device.getDeviceId(), channel.getChannelId());
               switch (eventElement.getText().toUpperCase()) {
                  case CatalogEvent.ON: // 上线
                  case CatalogEvent.ON:
                     // 上线
                     logger.info("收到来自设备【{}】的通道【{}】上线通知", device.getDeviceId(), channel.getChannelId());
                     storager.deviceChannelOnline(deviceId, channel.getChannelId());
                     // 回复200 OK
                     responseAck(evt, Response.OK);
                     break;
                  case CatalogEvent.OFF : // 离线
                  case CatalogEvent.OFF :
                     // 离线
                     logger.info("收到来自设备【{}】的通道【{}】离线通知", device.getDeviceId(), channel.getChannelId());
                     storager.deviceChannelOffline(deviceId, channel.getChannelId());
                     // 回复200 OK
                     responseAck(evt, Response.OK);
                     break;
                  case CatalogEvent.VLOST: // 视频丢失
                  case CatalogEvent.VLOST:
                     // 视频丢失
                     logger.info("收到来自设备【{}】的通道【{}】视频丢失通知", device.getDeviceId(), channel.getChannelId());
                     storager.deviceChannelOffline(deviceId, channel.getChannelId());
                     // 回复200 OK
                     responseAck(evt, Response.OK);
                     break;
                  case CatalogEvent.DEFECT: // 故障
                  case CatalogEvent.DEFECT:
                     // 故障
                     // 回复200 OK
                     responseAck(evt, Response.OK);
                     break;
                  case CatalogEvent.ADD: // 增加
                  case CatalogEvent.ADD:
                     // 增加
                     logger.info("收到来自设备【{}】的增加通道【{}】通知", device.getDeviceId(), channel.getChannelId());
                     storager.updateChannel(deviceId, channel);
                     responseAck(evt, Response.OK);
                     break;
                  case CatalogEvent.DEL: // 删除
                  case CatalogEvent.DEL:
                     // 删除
                     logger.info("收到来自设备【{}】的删除通道【{}】通知", device.getDeviceId(), channel.getChannelId());
                     storager.delChannel(deviceId, channel.getChannelId());
                     responseAck(evt, Response.OK);
                     break;
                  case CatalogEvent.UPDATE: // 更新
                  case CatalogEvent.UPDATE:
                     // 更新
                     logger.info("收到来自设备【{}】的更新通道【{}】通知", device.getDeviceId(), channel.getChannelId());
                     storager.updateChannel(deviceId, channel);
                     responseAck(evt, Response.OK);
@@ -323,10 +328,6 @@
               // 转发变化信息
               eventPublisher.catalogEventPublish(null, channel, eventElement.getText().toUpperCase());
            }
            if (!redisCatchStorage.deviceIsOnline(deviceId)) {
               publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE);
            }
         }
      } catch (DocumentException | SipException | InvalidArgumentException | ParseException e) {