优化语音广播流程

This commit is contained in:
648540858
2022-05-10 13:08:32 +08:00
parent 65fa75fb44
commit f8f65d473b
8 changed files with 157 additions and 59 deletions

View File

@@ -1,13 +1,14 @@
package com.genersoft.iot.vmp.gb28181.session;
import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.gb28181.bean.AudioBroadcastCatch;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 语音广播消息管理类
@@ -16,6 +17,9 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
public class AudioBroadcastManager {
@Autowired
private SipConfig config;
public static Map<String, AudioBroadcastCatch> data = new ConcurrentHashMap<>();
public void add(AudioBroadcastCatch audioBroadcastCatch) {
@@ -54,6 +58,16 @@ public class AudioBroadcastManager {
}
public AudioBroadcastCatch get(String deviceId, String channelId) {
return data.get(deviceId + channelId);
AudioBroadcastCatch audioBroadcastCatch = data.get(deviceId + channelId);
if (audioBroadcastCatch == null) {
Stream<AudioBroadcastCatch> allAudioBroadcastCatchStreamForDevice = data.values().stream().filter(
audioBroadcastCatchItem -> Objects.equals(audioBroadcastCatchItem.getDeviceId(), deviceId));
List<AudioBroadcastCatch> audioBroadcastCatchList = allAudioBroadcastCatchStreamForDevice.collect(Collectors.toList());
if (audioBroadcastCatchList.size() == 1 && Objects.equals(config.getId(), channelId)) {
audioBroadcastCatch = audioBroadcastCatchList.get(0);
}
}
return audioBroadcastCatch;
}
}