Compare commits

...

5 Commits

Author SHA1 Message Date
阿斌
798d7efc67
Pre Merge pull request !36 from 阿斌/N/A 2026-06-18 06:27:17 +00:00
lin
bc1b5797e8 修复缺少的消息回复 2026-06-18 14:27:00 +08:00
lin
ef69a355fd 去除心跳消息多余回复的 2026-06-18 13:07:05 +08:00
lin
03d36a9ac7 message回调事件支持单sn多回复 2026-06-18 10:32:43 +08:00
阿斌
da98101aac
update src/main/resources/civilCode.csv.
行政规划错误。江苏南通海门市,修改为海门区,浙江杭州删除下城区、江干区,新增钱塘区,临平区

Signed-off-by: 阿斌 <38912748@qq.com>
2024-12-15 08:58:42 +00:00
13 changed files with 71 additions and 19 deletions

View File

@ -22,6 +22,8 @@ public class MessageEvent<T> implements Delayed {
private String result;
private boolean keepAlive = false;
private T t;
private ErrorCallback<T> callback;

View File

@ -3,15 +3,22 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import gov.nist.javax.sip.message.SIPRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
import javax.sip.SipException;
import javax.sip.message.Response;
import java.text.ParseException;
/**
* SIP命令类型 CANCEL请求
*/
@Slf4j
@Component
public class CancelRequestProcessor extends SIPRequestProcessorParent implements InitializingBean, ISIPRequestProcessor {
@ -34,7 +41,11 @@ public class CancelRequestProcessor extends SIPRequestProcessorParent implements
@Override
public void process(RequestEvent evt) {
// TODO 优先级99 Cancel Request消息实现此消息一般为级联消息上级给下级发送请求取消指令
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
}

View File

@ -593,7 +593,12 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
playService.stopAudioBroadcast(device, deviceChannel);
}
} catch (SdpException e) {
log.error("[SDP解析异常]", e);
log.error("[语音通话] SDP解析异常", e);
try {
responseAck(request, Response.BAD_REQUEST);
} catch (SipException | InvalidArgumentException | ParseException exception) {
log.error("[命令发送失败] 来自设备的Invite请求非语音广播 FORBIDDEN: {}", exception.getMessage());
}
playService.stopAudioBroadcast(device, deviceChannel);
}
}

View File

@ -63,6 +63,11 @@ public abstract class MessageHandlerAbstract extends SIPRequestProcessorParent i
messageHandler.handForDevice(evt, device, element);
}else {
handMessageEvent(element, null);
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
}
@ -72,6 +77,12 @@ public abstract class MessageHandlerAbstract extends SIPRequestProcessorParent i
IMessageHandler messageHandler = messageHandlerMap.get(cmd);
if (messageHandler != null) {
messageHandler.handForPlatform(evt, parentPlatform, element);
}else {
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
}
@ -87,7 +98,9 @@ public abstract class MessageHandlerAbstract extends SIPRequestProcessorParent i
}else {
subscribe.getCallback().run(ErrorCode.ERROR100.getCode(), ErrorCode.ERROR100.getMsg(), result);
}
messageSubscribe.removeSubscribe(cmd + sn);
if (!subscribe.isKeepAlive()) {
messageSubscribe.removeSubscribe(cmd + sn);
}
}
}
}

View File

@ -119,7 +119,7 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement
}else { // 由于上面已经判断都为null则直接返回所以这里device和parentPlatform必有一个不为null
messageHandler.handForPlatform(evt, parentPlatform, rootElement);
}
responseAck(request, Response.OK);
// 存在handler则由handler自行决定回复什么
}else {
// 不支持的message
// 不存在则回复415

View File

@ -63,7 +63,11 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
@Override
public void handForDevice(RequestEvent evt, Device device, Element element) {
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
@Override

View File

@ -71,7 +71,11 @@ public class BroadcastNotifyMessageHandler extends SIPRequestProcessorParent imp
@Override
public void handForDevice(RequestEvent evt, Device device, Element element) {
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
@Override

View File

@ -34,7 +34,11 @@ public class AlarmQueryMessageHandler extends SIPRequestProcessorParent implemen
@Override
public void handForDevice(RequestEvent evt, Device device, Element element) {
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
@Override

View File

@ -55,7 +55,11 @@ public class DeviceInfoQueryMessageHandler extends SIPRequestProcessorParent imp
@Override
public void handForDevice(RequestEvent evt, Device device, Element rootElement) {
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
@Override

View File

@ -46,7 +46,11 @@ public class DeviceStatusQueryMessageHandler extends SIPRequestProcessorParent i
@Override
public void handForDevice(RequestEvent evt, Device device, Element element) {
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
@Override

View File

@ -65,7 +65,11 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp
@Override
public void handForDevice(RequestEvent evt, Device device, Element element) {
try {
responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 回复200 OK: {}", e.getMessage());
}
}
@Override

View File

@ -7,10 +7,7 @@ import com.genersoft.iot.vmp.conf.redis.RedisRpcConfig;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcMessage;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcRequest;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcResponse;
import com.genersoft.iot.vmp.gb28181.bean.BasicParam;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceConfigAware;
import com.genersoft.iot.vmp.gb28181.bean.SyncStatus;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.service.IDeviceService;
import com.genersoft.iot.vmp.service.redisMsg.dto.RedisRpcController;
import com.genersoft.iot.vmp.service.redisMsg.dto.RedisRpcMapping;

View File

@ -861,7 +861,7 @@
320623,如东县,3206
320681,启东市,3206
320682,如皋市,3206
320684,海门,3206
320684,海门,3206
320685,海安市,3206
3207,连云港市,32
320703,连云区,3207
@ -918,8 +918,6 @@
33,浙江省,
3301,杭州市,33
330102,上城区,3301
330103,下城区,3301
330104,江干区,3301
330105,拱墅区,3301
330106,西湖区,3301
330108,滨江区,3301
@ -927,6 +925,8 @@
330110,余杭区,3301
330111,富阳区,3301
330112,临安区,3301
330113,临平区,3301
330114,钱塘区,3301
330122,桐庐县,3301
330127,淳安县,3301
330182,建德市,3301

1 编号 名称 上级
861 320623 如东县 3206
862 320681 启东市 3206
863 320682 如皋市 3206
864 320684 海门市 海门区 3206
865 320685 海安市 3206
866 3207 连云港市 32
867 320703 连云区 3207
918 33 浙江省
919 3301 杭州市 33
920 330102 上城区 3301
330103 下城区 3301
330104 江干区 3301
921 330105 拱墅区 3301
922 330106 西湖区 3301
923 330108 滨江区 3301
925 330110 余杭区 3301
926 330111 富阳区 3301
927 330112 临安区 3301
928 330113 临平区 3301
929 330114 钱塘区 3301
930 330122 桐庐县 3301
931 330127 淳安县 3301
932 330182 建德市 3301