添加设备离线原因
This commit is contained in:
parent
7a651ed327
commit
fd4fa255e6
@ -1,7 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.gb28181.event.device;
|
package com.genersoft.iot.vmp.gb28181.event.device;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
|
|
||||||
import com.genersoft.iot.vmp.service.IDeviceService;
|
import com.genersoft.iot.vmp.service.IDeviceService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
@ -9,8 +8,6 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import javax.sip.ClientTransaction;
|
import javax.sip.ClientTransaction;
|
||||||
import javax.sip.address.SipURI;
|
import javax.sip.address.SipURI;
|
||||||
import javax.sip.header.CallIdHeader;
|
|
||||||
import javax.sip.header.ToHeader;
|
|
||||||
import javax.sip.message.Request;
|
import javax.sip.message.Request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,7 +31,7 @@ public class RequestTimeoutEventImpl implements ApplicationListener<RequestTimeo
|
|||||||
if (device == null) {
|
if (device == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
deviceService.offline(device.getDeviceId());
|
deviceService.offline(device.getDeviceId(), "等待消息超时");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ public class SipRunner implements CommandLineRunner {
|
|||||||
|
|
||||||
for (Device device : deviceList) {
|
for (Device device : deviceList) {
|
||||||
if (deviceService.expire(device)){
|
if (deviceService.expire(device)){
|
||||||
deviceService.offline(device.getDeviceId());
|
deviceService.offline(device.getDeviceId(), "注册已过期");
|
||||||
}else {
|
}else {
|
||||||
deviceService.online(device);
|
deviceService.online(device);
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
|
|||||||
deviceService.online(device);
|
deviceService.online(device);
|
||||||
} else {
|
} else {
|
||||||
logger.info("[注销成功] deviceId: {}->{}" ,deviceId, requestAddress);
|
logger.info("[注销成功] deviceId: {}->{}" ,deviceId, requestAddress);
|
||||||
deviceService.offline(deviceId);
|
deviceService.offline(deviceId, "主动注销");
|
||||||
}
|
}
|
||||||
} catch (SipException | NoSuchAlgorithmException | ParseException e) {
|
} catch (SipException | NoSuchAlgorithmException | ParseException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -94,7 +94,7 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp
|
|||||||
// 刷新过期任务
|
// 刷新过期任务
|
||||||
String registerExpireTaskKey = VideoManagerConstants.REGISTER_EXPIRE_TASK_KEY_PREFIX + device.getDeviceId();
|
String registerExpireTaskKey = VideoManagerConstants.REGISTER_EXPIRE_TASK_KEY_PREFIX + device.getDeviceId();
|
||||||
// 如果三次心跳失败,则设置设备离线
|
// 如果三次心跳失败,则设置设备离线
|
||||||
dynamicTask.startDelay(registerExpireTaskKey, ()-> deviceService.offline(device.getDeviceId()), device.getKeepaliveIntervalTime()*1000*3);
|
dynamicTask.startDelay(registerExpireTaskKey, ()-> deviceService.offline(device.getDeviceId(), "三次心跳失败"), device.getKeepaliveIntervalTime()*1000*3);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd;
|
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
|
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
|
||||||
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
|
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
|
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
|
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
|
||||||
@ -26,7 +24,6 @@ import javax.sip.RequestEvent;
|
|||||||
import javax.sip.SipException;
|
import javax.sip.SipException;
|
||||||
import javax.sip.message.Response;
|
import javax.sip.message.Response;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class DeviceStatusResponseMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler {
|
public class DeviceStatusResponseMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler {
|
||||||
@ -76,7 +73,7 @@ public class DeviceStatusResponseMessageHandler extends SIPRequestProcessorParen
|
|||||||
if ("ONLINE".equalsIgnoreCase(text.trim())) {
|
if ("ONLINE".equalsIgnoreCase(text.trim())) {
|
||||||
deviceService.online(device);
|
deviceService.online(device);
|
||||||
}else {
|
}else {
|
||||||
deviceService.offline(device.getDeviceId());
|
deviceService.offline(device.getDeviceId(), "设备状态查询结果:" + text.trim());
|
||||||
}
|
}
|
||||||
RequestMessage msg = new RequestMessage();
|
RequestMessage msg = new RequestMessage();
|
||||||
msg.setKey(DeferredResultHolder.CALLBACK_CMD_DEVICESTATUS + device.getDeviceId());
|
msg.setKey(DeferredResultHolder.CALLBACK_CMD_DEVICESTATUS + device.getDeviceId());
|
||||||
|
@ -24,7 +24,7 @@ public interface IDeviceService {
|
|||||||
* 设备下线
|
* 设备下线
|
||||||
* @param deviceId 设备编号
|
* @param deviceId 设备编号
|
||||||
*/
|
*/
|
||||||
void offline(String deviceId);
|
void offline(String deviceId, String reason);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加目录订阅
|
* 添加目录订阅
|
||||||
|
@ -156,12 +156,12 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
// 刷新过期任务
|
// 刷新过期任务
|
||||||
String registerExpireTaskKey = VideoManagerConstants.REGISTER_EXPIRE_TASK_KEY_PREFIX + device.getDeviceId();
|
String registerExpireTaskKey = VideoManagerConstants.REGISTER_EXPIRE_TASK_KEY_PREFIX + device.getDeviceId();
|
||||||
// 如果第一次注册那么必须在60 * 3时间内收到一个心跳,否则设备离线
|
// 如果第一次注册那么必须在60 * 3时间内收到一个心跳,否则设备离线
|
||||||
dynamicTask.startDelay(registerExpireTaskKey, ()-> offline(device.getDeviceId()), device.getKeepaliveIntervalTime() * 1000 * 3);
|
dynamicTask.startDelay(registerExpireTaskKey, ()-> offline(device.getDeviceId(), "首次注册后未能收到心跳"), device.getKeepaliveIntervalTime() * 1000 * 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void offline(String deviceId) {
|
public void offline(String deviceId, String reason) {
|
||||||
logger.error("[设备离线], device:{}", deviceId);
|
logger.error("[设备离线],{}, device:{}", reason, deviceId);
|
||||||
Device device = deviceMapper.getDeviceByDeviceId(deviceId);
|
Device device = deviceMapper.getDeviceByDeviceId(deviceId);
|
||||||
if (device == null) {
|
if (device == null) {
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user