设备信息
This commit is contained in:
parent
90b716e404
commit
69b554c679
@ -10,6 +10,7 @@ import cn.skcks.docking.gb28181.core.sip.message.processor.message.request.dto.M
|
|||||||
import cn.skcks.docking.gb28181.core.sip.message.sender.SipMessageSender;
|
import cn.skcks.docking.gb28181.core.sip.message.sender.SipMessageSender;
|
||||||
import cn.skcks.docking.gb28181.core.sip.utils.SipUtil;
|
import cn.skcks.docking.gb28181.core.sip.utils.SipUtil;
|
||||||
import cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.catalog.CatalogCmdProcessor;
|
import cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.catalog.CatalogCmdProcessor;
|
||||||
|
import cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.deviceinfo.DeviceInfoRequestProcessor;
|
||||||
import cn.skcks.docking.gb28181.mocking.core.sip.message.subscribe.SipSubscribe;
|
import cn.skcks.docking.gb28181.mocking.core.sip.message.subscribe.SipSubscribe;
|
||||||
import cn.skcks.docking.gb28181.mocking.core.sip.response.SipResponseBuilder;
|
import cn.skcks.docking.gb28181.mocking.core.sip.response.SipResponseBuilder;
|
||||||
import gov.nist.javax.sip.message.SIPRequest;
|
import gov.nist.javax.sip.message.SIPRequest;
|
||||||
@ -35,6 +36,7 @@ public class MessageRequestProcessor implements MessageProcessor {
|
|||||||
private final SipMessageSender sender;
|
private final SipMessageSender sender;
|
||||||
|
|
||||||
private final CatalogCmdProcessor catalogCmdProcessor;
|
private final CatalogCmdProcessor catalogCmdProcessor;
|
||||||
|
private final DeviceInfoRequestProcessor deviceInfoRequestProcessor;
|
||||||
|
|
||||||
private Response okResponse(SIPRequest request){
|
private Response okResponse(SIPRequest request){
|
||||||
return SipResponseBuilder.response(request, Response.OK, "OK");
|
return SipResponseBuilder.response(request, Response.OK, "OK");
|
||||||
@ -60,6 +62,9 @@ public class MessageRequestProcessor implements MessageProcessor {
|
|||||||
if(messageDto.getCmdType().equalsIgnoreCase(CmdType.CATALOG)) {
|
if(messageDto.getCmdType().equalsIgnoreCase(CmdType.CATALOG)) {
|
||||||
sender.send(senderIp, okResponse(request));
|
sender.send(senderIp, okResponse(request));
|
||||||
catalogCmdProcessor.process(request, content);
|
catalogCmdProcessor.process(request, content);
|
||||||
|
} else if(messageDto.getCmdType().equalsIgnoreCase("DeviceInfo")){
|
||||||
|
sender.send(senderIp, okResponse(request));
|
||||||
|
deviceInfoRequestProcessor.process(request, content);
|
||||||
} else {
|
} else {
|
||||||
Response response = SipResponseBuilder.response(request, Response.NOT_IMPLEMENTED, ResponseStatus.NOT_IMPLEMENTED.getMessage());
|
Response response = SipResponseBuilder.response(request, Response.NOT_IMPLEMENTED, ResponseStatus.NOT_IMPLEMENTED.getMessage());
|
||||||
sender.send(senderIp, response);
|
sender.send(senderIp, response);
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
package cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.deviceinfo;
|
||||||
|
|
||||||
|
import cn.skcks.docking.gb28181.common.xml.XmlUtils;
|
||||||
|
import cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.deviceinfo.dto.DeviceInfoRequestDTO;
|
||||||
|
import cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.deviceinfo.dto.DeviceInfoResponseDTO;
|
||||||
|
import cn.skcks.docking.gb28181.mocking.core.sip.request.SipRequestBuilder;
|
||||||
|
import cn.skcks.docking.gb28181.mocking.core.sip.sender.SipSender;
|
||||||
|
import cn.skcks.docking.gb28181.mocking.orm.mybatis.dynamic.model.MockingDevice;
|
||||||
|
import cn.skcks.docking.gb28181.mocking.service.device.DeviceService;
|
||||||
|
import gov.nist.javax.sip.message.SIPRequest;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.sip.header.CallIdHeader;
|
||||||
|
import javax.sip.header.FromHeader;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class DeviceInfoRequestProcessor {
|
||||||
|
private final SipSender sender;
|
||||||
|
|
||||||
|
private final DeviceService deviceService;
|
||||||
|
|
||||||
|
public void process(SIPRequest request, byte[] content){
|
||||||
|
DeviceInfoRequestDTO deviceInfoRequestDTO = XmlUtils.parse(content, DeviceInfoRequestDTO.class);
|
||||||
|
String sn = deviceInfoRequestDTO.getSn();
|
||||||
|
String deviceId = deviceInfoRequestDTO.getDeviceId();
|
||||||
|
MockingDevice mockingDevice = deviceService.getDeviceByGbDeviceId(deviceId).orElse(null);
|
||||||
|
if(mockingDevice == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DeviceInfoResponseDTO deviceInfoResponseDTO = DeviceInfoResponseDTO.builder()
|
||||||
|
.sn(sn)
|
||||||
|
.deviceId(deviceId)
|
||||||
|
.deviceName(mockingDevice.getName())
|
||||||
|
.channel(1)
|
||||||
|
.manufacturer("GB28181-Docking-Platform")
|
||||||
|
.build();
|
||||||
|
FromHeader fromHeader = request.getFromHeader();
|
||||||
|
sender.sendRequest((provider, ip, port)->{
|
||||||
|
CallIdHeader callIdHeader = provider.getNewCallId();
|
||||||
|
return SipRequestBuilder.createMessageRequest(mockingDevice,
|
||||||
|
ip, port, 1, XmlUtils.toXml(deviceInfoResponseDTO), fromHeader.getTag(), callIdHeader);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.deviceinfo.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||||
|
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||||
|
import lombok.Data;
|
||||||
|
@JacksonXmlRootElement(localName = "Query")
|
||||||
|
@Data
|
||||||
|
public class DeviceInfoRequestDTO {
|
||||||
|
private String cmdType;
|
||||||
|
|
||||||
|
@JacksonXmlProperty(localName = "SN")
|
||||||
|
private String sn;
|
||||||
|
|
||||||
|
@JacksonXmlProperty(localName = "DeviceID")
|
||||||
|
private String deviceId;
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package cn.skcks.docking.gb28181.mocking.core.sip.message.processor.message.request.deviceinfo.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
|
||||||
|
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@JacksonXmlRootElement(localName = "Response")
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
@Data
|
||||||
|
public class DeviceInfoResponseDTO {
|
||||||
|
@Builder.Default
|
||||||
|
private String cmdType = "DeviceInfo";
|
||||||
|
@JacksonXmlProperty(localName = "SN")
|
||||||
|
private String sn;
|
||||||
|
|
||||||
|
@JacksonXmlProperty(localName = "DeviceID")
|
||||||
|
private String deviceId;
|
||||||
|
|
||||||
|
private String deviceName;
|
||||||
|
|
||||||
|
@Builder.Default
|
||||||
|
private String Result = "OK";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备生产商
|
||||||
|
*/
|
||||||
|
private String manufacturer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备型号(可选)
|
||||||
|
*/
|
||||||
|
private String model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备固件版本(可选)
|
||||||
|
*/
|
||||||
|
private String firmware;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 视频输入通道数(可选)
|
||||||
|
*/
|
||||||
|
private Integer channel;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user