| | |
| | | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| | | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.cmd.CatalogQueryMessageHandler; |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; |
| | | import org.dom4j.Element; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | |
| | | |
| | | public Map<String, IMessageHandler> messageHandlerMap = new ConcurrentHashMap<>(); |
| | | |
| | | @Autowired |
| | | private IVideoManagerStorage storage; |
| | | |
| | | public void addHandler(String cmdType, IMessageHandler messageHandler) { |
| | | messageHandlerMap.put(cmdType, messageHandler); |
| | | } |
| | |
| | | public void handForDevice(RequestEvent evt, Device device, Element element) { |
| | | String cmd = getText(element, "CmdType"); |
| | | IMessageHandler messageHandler = messageHandlerMap.get(cmd); |
| | | |
| | | if (messageHandler != null) { |
| | | //两个国标平台互相级联时由于上一步判断导致本该在平台处理的消息 放到了设备的处理逻辑 |
| | | //所以对目录查询单独做了校验 |
| | | if(messageHandler instanceof CatalogQueryMessageHandler){ |
| | | ParentPlatform parentPlatform = storage.queryParentPlatByServerGBId(device.getDeviceId()); |
| | | messageHandler.handForPlatform(evt, parentPlatform, element); |
| | | return; |
| | | } |
| | | messageHandler.handForDevice(evt, device, element); |
| | | } |
| | | } |