From 62f716be9cd1cee2a5fba566db3fcd43bd9fc4cc Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 03 四月 2024 15:04:33 +0800
Subject: [PATCH] 添加idea logo
---
src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java | 71 +++++++++++++++++++++++++++++------
1 files changed, 58 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java b/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java
index dec96c0..343d2a6 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java
@@ -1,13 +1,15 @@
package com.genersoft.iot.vmp.gb28181.session;
+import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.gb28181.bean.AudioBroadcastCatch;
+import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
+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,18 +18,27 @@
@Component
public class AudioBroadcastManager {
+ @Autowired
+ private SipConfig config;
+
public static Map<String, AudioBroadcastCatch> data = new ConcurrentHashMap<>();
- public void add(AudioBroadcastCatch audioBroadcastCatch) {
- this.update(audioBroadcastCatch);
- }
-
public void update(AudioBroadcastCatch audioBroadcastCatch) {
- data.put(audioBroadcastCatch.getDeviceId() + audioBroadcastCatch.getChannelId(), audioBroadcastCatch);
+ if (SipUtils.isFrontEnd(audioBroadcastCatch.getDeviceId())) {
+ audioBroadcastCatch.setChannelId(audioBroadcastCatch.getDeviceId());
+ data.put(audioBroadcastCatch.getDeviceId(), audioBroadcastCatch);
+ }else {
+ data.put(audioBroadcastCatch.getDeviceId() + audioBroadcastCatch.getChannelId(), audioBroadcastCatch);
+ }
}
public void del(String deviceId, String channelId) {
- data.remove(deviceId + channelId);
+ if (SipUtils.isFrontEnd(deviceId)) {
+ data.remove(deviceId);
+ }else {
+ data.remove(deviceId + channelId);
+ }
+
}
public void delByDeviceId(String deviceId) {
@@ -46,14 +57,48 @@
public boolean exit(String deviceId, String channelId) {
for (String key : data.keySet()) {
- if (key.equals(deviceId + channelId)) {
- return true;
+ if (SipUtils.isFrontEnd(deviceId)) {
+ return key.equals(deviceId);
+ }else {
+ return key.equals(deviceId + channelId);
}
}
return false;
}
public AudioBroadcastCatch get(String deviceId, String channelId) {
- return data.get(deviceId + channelId);
+ AudioBroadcastCatch audioBroadcastCatch;
+ if (SipUtils.isFrontEnd(deviceId)) {
+ audioBroadcastCatch = data.get(deviceId);
+ }else {
+ 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;
+ }
+
+ public List<AudioBroadcastCatch> get(String deviceId) {
+ List<AudioBroadcastCatch> audioBroadcastCatchList= new ArrayList<>();
+ if (SipUtils.isFrontEnd(deviceId)) {
+ if (data.get(deviceId) != null) {
+ audioBroadcastCatchList.add(data.get(deviceId));
+ }
+ }else {
+ for (String key : data.keySet()) {
+ if (key.startsWith(deviceId)) {
+ audioBroadcastCatchList.add(data.get(key));
+ }
+ }
+ }
+
+ return audioBroadcastCatchList;
}
}
--
Gitblit v1.8.0