From b86f0aaae2f0212bc01ddfd3e5d646c22eb1d8c0 Mon Sep 17 00:00:00 2001
From: panll <m18010473990@163.com>
Date: 星期五, 08 三月 2024 09:33:38 +0800
Subject: [PATCH] !28 语音对讲合并 语音对讲合并
---
src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java
old mode 100644
new mode 100755
index def639b..9dc86f8
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java
@@ -1,6 +1,7 @@
package com.genersoft.iot.vmp.service.impl;
import com.alibaba.fastjson2.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.genersoft.iot.vmp.common.InviteInfo;
import com.genersoft.iot.vmp.common.InviteSessionStatus;
import com.genersoft.iot.vmp.common.InviteSessionType;
@@ -20,6 +21,7 @@
import java.util.concurrent.CopyOnWriteArrayList;
@Service
+@DS("master")
public class InviteStreamServiceImpl implements IInviteStreamService {
private final Logger logger = LoggerFactory.getLogger(InviteStreamServiceImpl.class);
@@ -80,7 +82,8 @@
":" + inviteInfoForUpdate.getType() +
":" + inviteInfoForUpdate.getDeviceId() +
":" + inviteInfoForUpdate.getChannelId() +
- ":" + inviteInfoForUpdate.getStream();
+ ":" + inviteInfoForUpdate.getStream()+
+ ":" + inviteInfoForUpdate.getSsrcInfo().getSsrc();
redisTemplate.opsForValue().set(key, inviteInfoForUpdate);
}
@@ -96,7 +99,8 @@
":" + inviteInfo.getType() +
":" + inviteInfo.getDeviceId() +
":" + inviteInfo.getChannelId() +
- ":" + stream;
+ ":" + stream +
+ ":" + inviteInfo.getSsrcInfo().getSsrc();
inviteInfoInDb.setStream(stream);
if (inviteInfoInDb.getSsrcInfo() != null) {
inviteInfoInDb.getSsrcInfo().setStream(stream);
@@ -111,10 +115,14 @@
":" + (type != null ? type : "*") +
":" + (deviceId != null ? deviceId : "*") +
":" + (channelId != null ? channelId : "*") +
- ":" + (stream != null ? stream : "*");
+ ":" + (stream != null ? stream : "*")
+ + ":*";
List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
- if (scanResult.size() != 1) {
+ if (scanResult.isEmpty()) {
return null;
+ }
+ if (scanResult.size() != 1) {
+ logger.warn("[鑾峰彇InviteInfo] 鍙戠幇 key: {}瀛樺湪澶氭潯", key);
}
return (InviteInfo) redisTemplate.opsForValue().get(scanResult.get(0));
@@ -136,7 +144,8 @@
":" + (type != null ? type : "*") +
":" + (deviceId != null ? deviceId : "*") +
":" + (channelId != null ? channelId : "*") +
- ":" + (stream != null ? stream : "*");
+ ":" + (stream != null ? stream : "*") +
+ ":*";
List<Object> scanResult = RedisUtil.scan(redisTemplate, scanKey);
if (scanResult.size() > 0) {
for (Object keyObj : scanResult) {
@@ -191,7 +200,7 @@
@Override
public int getStreamInfoCount(String mediaServerId) {
int count = 0;
- String key = VideoManagerConstants.INVITE_PREFIX + ":*:*:*:*";
+ String key = VideoManagerConstants.INVITE_PREFIX + ":*:*:*:*:*";
List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
if (scanResult.size() == 0) {
return 0;
@@ -229,4 +238,35 @@
}
return key;
}
+
+ @Override
+ public InviteInfo getInviteInfoBySSRC(String ssrc) {
+ String key = VideoManagerConstants.INVITE_PREFIX + ":*:*:*:*:" + ssrc;
+ List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
+ if (scanResult.size() != 1) {
+ return null;
+ }
+
+ return (InviteInfo) redisTemplate.opsForValue().get(scanResult.get(0));
+ }
+
+ @Override
+ public InviteInfo updateInviteInfoForSSRC(InviteInfo inviteInfo, String ssrc) {
+ InviteInfo inviteInfoInDb = getInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId(), inviteInfo.getChannelId(), inviteInfo.getStream());
+ if (inviteInfoInDb == null) {
+ return null;
+ }
+ removeInviteInfo(inviteInfoInDb);
+ String key = VideoManagerConstants.INVITE_PREFIX +
+ ":" + inviteInfo.getType() +
+ ":" + inviteInfo.getDeviceId() +
+ ":" + inviteInfo.getChannelId() +
+ ":" + inviteInfo.getStream() +
+ ":" + ssrc;
+ if (inviteInfoInDb.getSsrcInfo() != null) {
+ inviteInfoInDb.getSsrcInfo().setSsrc(ssrc);
+ }
+ redisTemplate.opsForValue().set(key, inviteInfoInDb);
+ return inviteInfoInDb;
+ }
}
--
Gitblit v1.8.0