| | |
| | | |
| | | } |
| | | String key = VideoManagerConstants.INVITE_PREFIX + |
| | | "_" + inviteInfoForUpdate.getType() + |
| | | "_" + inviteInfoForUpdate.getDeviceId() + |
| | | "_" + inviteInfoForUpdate.getChannelId() + |
| | | "_" + inviteInfoForUpdate.getStream(); |
| | | ":" + inviteInfoForUpdate.getType() + |
| | | ":" + inviteInfoForUpdate.getDeviceId() + |
| | | ":" + inviteInfoForUpdate.getChannelId() + |
| | | ":" + inviteInfoForUpdate.getStream()+ |
| | | ":" + inviteInfoForUpdate.getSsrcInfo().getSsrc(); |
| | | redisTemplate.opsForValue().set(key, inviteInfoForUpdate); |
| | | } |
| | | |
| | |
| | | } |
| | | removeInviteInfo(inviteInfoInDb); |
| | | String key = VideoManagerConstants.INVITE_PREFIX + |
| | | "_" + inviteInfo.getType() + |
| | | "_" + inviteInfo.getDeviceId() + |
| | | "_" + inviteInfo.getChannelId() + |
| | | "_" + stream; |
| | | ":" + inviteInfo.getType() + |
| | | ":" + inviteInfo.getDeviceId() + |
| | | ":" + inviteInfo.getChannelId() + |
| | | ":" + stream + |
| | | ":" + inviteInfo.getSsrcInfo().getSsrc(); |
| | | inviteInfoInDb.setStream(stream); |
| | | if (inviteInfoInDb.getSsrcInfo() != null) { |
| | | inviteInfoInDb.getSsrcInfo().setStream(stream); |
| | | } |
| | | redisTemplate.opsForValue().set(key, inviteInfoInDb); |
| | | return inviteInfoInDb; |
| | | } |
| | |
| | | @Override |
| | | public InviteInfo getInviteInfo(InviteSessionType type, String deviceId, String channelId, String stream) { |
| | | String key = VideoManagerConstants.INVITE_PREFIX + |
| | | "_" + (type != null ? type : "*") + |
| | | "_" + (deviceId != null ? deviceId : "*") + |
| | | "_" + (channelId != null ? channelId : "*") + |
| | | "_" + (stream != null ? stream : "*"); |
| | | ":" + (type != null ? type : "*") + |
| | | ":" + (deviceId != null ? deviceId : "*") + |
| | | ":" + (channelId != null ? channelId : "*") + |
| | | ":" + (stream != null ? stream : "*") |
| | | + ":*"; |
| | | List<Object> scanResult = RedisUtil.scan(redisTemplate, key); |
| | | if (scanResult.size() != 1) { |
| | | return null; |
| | |
| | | @Override |
| | | public void removeInviteInfo(InviteSessionType type, String deviceId, String channelId, String stream) { |
| | | String scanKey = VideoManagerConstants.INVITE_PREFIX + |
| | | "_" + (type != null ? type : "*") + |
| | | "_" + (deviceId != null ? deviceId : "*") + |
| | | "_" + (channelId != null ? channelId : "*") + |
| | | "_" + (stream != null ? stream : "*"); |
| | | ":" + (type != null ? type : "*") + |
| | | ":" + (deviceId != null ? deviceId : "*") + |
| | | ":" + (channelId != null ? channelId : "*") + |
| | | ":" + (stream != null ? stream : "*") + |
| | | ":*"; |
| | | List<Object> scanResult = RedisUtil.scan(redisTemplate, scanKey); |
| | | if (scanResult.size() > 0) { |
| | | for (Object keyObj : scanResult) { |
| | |
| | | } |
| | | |
| | | private String buildKey(InviteSessionType type, String deviceId, String channelId, String stream) { |
| | | String key = type + "_" + deviceId + "_" + channelId; |
| | | String key = type + ":" + deviceId + ":" + channelId; |
| | | // 如果ssrc未null那么可以实现一个通道只能一次操作,ssrc不为null则可以支持一个通道多次invite |
| | | if (stream != null) { |
| | | key += ("_" + stream); |
| | | key += (":" + stream); |
| | | } |
| | | return key; |
| | | } |
| | |
| | | @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; |
| | |
| | | |
| | | |
| | | private String buildSubStreamKey(InviteSessionType type, String deviceId, String channelId, String stream) { |
| | | String key = type + "_" + "_" + deviceId + "_" + channelId; |
| | | String key = type + ":" + ":" + deviceId + ":" + channelId; |
| | | // 如果ssrc为null那么可以实现一个通道只能一次操作,ssrc不为null则可以支持一个通道多次invite |
| | | if (stream != null) { |
| | | key += ("_" + stream); |
| | | key += (":" + stream); |
| | | } |
| | | 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() + |
| | | ":" + inviteInfo.getSsrcInfo().getSsrc(); |
| | | if (inviteInfoInDb.getSsrcInfo() != null) { |
| | | inviteInfoInDb.getSsrcInfo().setSsrc(ssrc); |
| | | } |
| | | redisTemplate.opsForValue().set(key, inviteInfoInDb); |
| | | return inviteInfoInDb; |
| | | } |
| | | } |