| | |
| | | import com.genersoft.iot.vmp.utils.GpsUtil;
|
| | | import com.genersoft.iot.vmp.utils.SpringBeanFactory;
|
| | | import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
| | | import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
|
| | | import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
|
| | |
|
| | | import gov.nist.javax.sip.SipStackImpl;
|
| | | import gov.nist.javax.sip.address.AddressImpl;
|
| | |
| | | String cmd = XmlUtil.getText(rootElement, "CmdType");
|
| | |
|
| | | if (MESSAGE_KEEP_ALIVE.equals(cmd)) {
|
| | | logger.info("接收到KeepAlive消息");
|
| | | logger.debug("接收到KeepAlive消息");
|
| | | processMessageKeepAlive(evt);
|
| | | } else if (MESSAGE_CONFIG_DOWNLOAD.equals(cmd)) {
|
| | | logger.info("接收到ConfigDownload消息");
|
| | | logger.debug("接收到ConfigDownload消息");
|
| | | processMessageConfigDownload(evt);
|
| | | } else if (MESSAGE_CATALOG.equals(cmd)) {
|
| | | logger.info("接收到Catalog消息");
|
| | | logger.debug("接收到Catalog消息");
|
| | | processMessageCatalogList(evt);
|
| | | } else if (MESSAGE_DEVICE_INFO.equals(cmd)) {
|
| | | // DeviceInfo消息处理
|
| | |
| | | // DeviceStatus消息处理
|
| | | processMessageDeviceStatus(evt);
|
| | | } else if (MESSAGE_DEVICE_CONTROL.equals(cmd)) {
|
| | | logger.info("接收到DeviceControl消息");
|
| | | logger.debug("接收到DeviceControl消息");
|
| | | processMessageDeviceControl(evt);
|
| | | } else if (MESSAGE_DEVICE_CONFIG.equals(cmd)) {
|
| | | logger.info("接收到DeviceConfig消息");
|
| | | processMessageDeviceConfig(evt);
|
| | | } else if (MESSAGE_ALARM.equals(cmd)) {
|
| | | logger.info("接收到Alarm消息");
|
| | | logger.debug("接收到Alarm消息");
|
| | | processMessageAlarm(evt);
|
| | | } else if (MESSAGE_RECORD_INFO.equals(cmd)) {
|
| | | logger.info("接收到RecordInfo消息");
|
| | | logger.debug("接收到RecordInfo消息");
|
| | | processMessageRecordInfo(evt);
|
| | | }else if (MESSAGE_MEDIA_STATUS.equals(cmd)) {
|
| | | logger.info("接收到MediaStatus消息");
|
| | | logger.debug("接收到MediaStatus消息");
|
| | | processMessageMediaStatus(evt);
|
| | | } else if (MESSAGE_MOBILE_POSITION.equals(cmd)) {
|
| | | logger.info("接收到MobilePosition消息");
|
| | | logger.debug("接收到MobilePosition消息");
|
| | | processMessageMobilePosition(evt);
|
| | | } else if (MESSAGE_PRESET_QUERY.equals(cmd)) {
|
| | | logger.info("接收到PresetQuery消息");
|
| | | logger.debug("接收到PresetQuery消息");
|
| | | processMessagePresetQuery(evt);
|
| | | } else if (MESSAGE_BROADCAST.equals(cmd)) {
|
| | | // Broadcast消息处理
|
| | | processMessageBroadcast(evt);
|
| | | } else {
|
| | | logger.info("接收到消息:" + cmd);
|
| | | logger.debug("接收到消息:" + cmd);
|
| | | responseAck(evt);
|
| | | }
|
| | | } catch (DocumentException | SipException |InvalidArgumentException | ParseException e) {
|
| | |
| | | // 回复200 OK
|
| | | responseAck(evt);
|
| | | String sn = rootElement.element("SN").getText();
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatById(platformId);
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
|
| | | cmderFroPlatform.deviceStatusResponse(parentPlatform, sn, fromHeader.getTag());
|
| | | }
|
| | | } else {
|
| | |
| | | if (deviceId.equals(targetGBId)) {
|
| | | // 远程启动本平台:需要在重新启动程序后先对SipStack解绑
|
| | | logger.info("执行远程启动本平台命令");
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatById(platformId);
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
|
| | | cmderFroPlatform.unregister(parentPlatform, null, null);
|
| | |
|
| | | Thread restartThread = new Thread(new Runnable() {
|
| | |
| | | // 回复200 OK
|
| | | responseAck(evt);
|
| | | String sn = rootElement.element("SN").getText();
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatById(platformId);
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
|
| | | cmderFroPlatform.deviceInfoResponse(parentPlatform, sn, fromHeader.getTag());
|
| | | }
|
| | | } else {
|
| | | logger.info("接收到DeviceInfo应答消息");
|
| | | logger.debug("接收到DeviceInfo应答消息");
|
| | | Device device = storager.queryVideoDevice(deviceId);
|
| | | if (device == null) {
|
| | | return;
|
| | |
| | | // if (deviceListElement == null) { // 存在DeviceList则为响应 catalog, 不存在DeviceList则为查询请求
|
| | | if (name.equalsIgnoreCase("Query")) { // 区分是Response——查询响应,还是Query——查询请求
|
| | | // TODO 后续将代码拆分
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatById(platformId);
|
| | | ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
|
| | | if (parentPlatform == null) {
|
| | | response404Ack(evt);
|
| | | return;
|
| | |
| | | StreamInfo streamInfo = redisCatchStorage.queryPlaybackByDevice(deviceId, "*");
|
| | | if (streamInfo != null) {
|
| | | redisCatchStorage.stopPlayback(streamInfo);
|
| | | cmder.streamByeCmd(streamInfo.getStreamId());
|
| | | cmder.streamByeCmd(streamInfo.getDeviceID(), streamInfo.getChannelId());
|
| | | }
|
| | | }
|
| | | } catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
|