old mode 100644
new mode 100755
 |  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  | import java.util.concurrent.CopyOnWriteArrayList; | 
 |  |  |  | 
 |  |  | @Service | 
 |  |  | @DS("master") | 
 |  |  | public class InviteStreamServiceImpl implements IInviteStreamService { | 
 |  |  |  | 
 |  |  |     private final Logger logger = LoggerFactory.getLogger(InviteStreamServiceImpl.class); | 
 |  |  | 
 |  |  |                 ":" + inviteInfoForUpdate.getType() + | 
 |  |  |                 ":" + inviteInfoForUpdate.getDeviceId() + | 
 |  |  |                 ":" + inviteInfoForUpdate.getChannelId() + | 
 |  |  |                 ":" + inviteInfoForUpdate.getStream(); | 
 |  |  |                 ":" + inviteInfoForUpdate.getStream()+ | 
 |  |  |                 ":" + inviteInfoForUpdate.getSsrcInfo().getSsrc(); | 
 |  |  |         redisTemplate.opsForValue().set(key, inviteInfoForUpdate); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |                 ":" + inviteInfo.getType() + | 
 |  |  |                 ":" + inviteInfo.getDeviceId() + | 
 |  |  |                 ":" + inviteInfo.getChannelId() + | 
 |  |  |                 ":" + stream; | 
 |  |  |                 ":" + stream + | 
 |  |  |                 ":" + inviteInfo.getSsrcInfo().getSsrc(); | 
 |  |  |         inviteInfoInDb.setStream(stream); | 
 |  |  |         if (inviteInfoInDb.getSsrcInfo() != null) { | 
 |  |  |             inviteInfoInDb.getSsrcInfo().setStream(stream); | 
 |  |  | 
 |  |  |                 ":" + (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)); | 
 |  |  | 
 |  |  |                 ":" + (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) { | 
 |  |  | 
 |  |  |     @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; | 
 |  |  | 
 |  |  |         } | 
 |  |  |         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; | 
 |  |  |     } | 
 |  |  | } |