修复通道共享状态过滤, 优化发流端口获取, 避免递归过多异常
This commit is contained in:
@@ -147,8 +147,8 @@ public interface PlatformChannelMapper {
|
||||
" <if test='query != null'> " +
|
||||
" AND (coalesce(wdc.gb_device_id, wdc.device_id) LIKE concat('%',#{query},'%') OR wpgc.custom_device_id LIKE concat('%',#{query},'%') " +
|
||||
" OR coalesce(wdc.gb_name, wdc.name) LIKE concat('%',#{query},'%') OR wpgc.custom_name LIKE concat('%',#{query},'%'))</if> " +
|
||||
" <if test='online == true'> AND coalesce(wpgc.status, wdc.gb_status, wdc.status) = 'ON'</if> " +
|
||||
" <if test='online == false'> AND coalesce(wpgc.status, wdc.gb_status, wdc.status) = 'OFF'</if> " +
|
||||
" <if test='online == true'> AND coalesce(wpgc.custom_status, wdc.gb_status, wdc.status) = 'ON'</if> " +
|
||||
" <if test='online == false'> AND coalesce(wpgc.custom_status, wdc.gb_status, wdc.status) = 'OFF'</if> " +
|
||||
" <if test='hasShare == true'> AND wpgc.platform_id = #{platformId}</if> " +
|
||||
" <if test='hasShare == false'> AND wpgc.platform_id is null</if> " +
|
||||
" <if test='dataType != null'> AND wdc.data_type = #{dataType}</if> " +
|
||||
|
||||
@@ -28,7 +28,7 @@ public class SendRtpServerServiceImpl implements ISendRtpServerService {
|
||||
|
||||
@Autowired
|
||||
private RedisTemplate<Object, Object> redisTemplate;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public SendRtpInfo createSendRtpInfo(MediaServer mediaServer, String ip, Integer port, String ssrc, String requesterId,
|
||||
@@ -230,31 +230,27 @@ public class SendRtpServerServiceImpl implements ISendRtpServerService {
|
||||
log.warn("{}获取redis连接信息失败", mediaServer.getId());
|
||||
return -1;
|
||||
}
|
||||
return getSendPort(startPort, endPort, sendIndexKey, sendRtpSet);
|
||||
}
|
||||
|
||||
private synchronized int getSendPort(int startPort, int endPort, String sendIndexKey, Set<Integer> sendRtpPortSet){
|
||||
// TODO 这里改为只取偶数端口
|
||||
RedisAtomicInteger redisAtomicInteger = new RedisAtomicInteger(sendIndexKey , redisTemplate.getConnectionFactory());
|
||||
if (redisAtomicInteger.get() < startPort) {
|
||||
redisAtomicInteger.set(startPort);
|
||||
return startPort;
|
||||
}else {
|
||||
int port = redisAtomicInteger.getAndIncrement();
|
||||
if (port > endPort) {
|
||||
redisAtomicInteger.set(startPort);
|
||||
if (sendRtpPortSet.contains(startPort)) {
|
||||
return getSendPort(startPort, endPort, sendIndexKey, sendRtpPortSet);
|
||||
}else {
|
||||
return startPort;
|
||||
for (int i = 0; i < endPort - startPort; i++) {
|
||||
int port = redisAtomicInteger.getAndIncrement();
|
||||
if (port > endPort) {
|
||||
redisAtomicInteger.set(startPort);
|
||||
if (sendRtpSet.contains(startPort)) {
|
||||
continue;
|
||||
}else {
|
||||
return startPort;
|
||||
}
|
||||
}
|
||||
if (!sendRtpSet.contains(port)) {
|
||||
return port;
|
||||
}
|
||||
}
|
||||
if (sendRtpPortSet.contains(port)) {
|
||||
return getSendPort(startPort, endPort, sendIndexKey, sendRtpPortSet);
|
||||
}else {
|
||||
return port;
|
||||
}
|
||||
}
|
||||
log.warn("{}获取发送端口失败, 无可用端口", mediaServer.getId());
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user