package com.ard.work.sdk.hb.cache;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
@Slf4j
|
public class HbStreamStatsCache {
|
private HbStreamStatsCache() {
|
throw new UnsupportedOperationException("该类为静态工具类,禁止实例化!");
|
}
|
|
/** 运行状态:Key=相机ID,Value=是否运行 */
|
private static final ConcurrentHashMap<String, AtomicBoolean> cameraRunningMap = new ConcurrentHashMap<>();
|
|
// ===================== 运行状态操作 =====================
|
public static void initRunningStatus(String cameraId) {
|
if (cameraId == null) return;
|
cameraRunningMap.put(cameraId, new AtomicBoolean(true));
|
log.debug("相机[{}]运行状态已初始化:运行中", cameraId);
|
}
|
|
public static boolean getRunningStatus(String cameraId) {
|
if (cameraId == null) return false;
|
AtomicBoolean status = cameraRunningMap.get(cameraId);
|
return status != null && status.get();
|
}
|
|
public static void setRunningStatus(String cameraId, boolean isRunning) {
|
if (cameraId == null) return;
|
AtomicBoolean status = cameraRunningMap.get(cameraId);
|
if (status == null) {
|
status = new AtomicBoolean(isRunning);
|
cameraRunningMap.put(cameraId, status);
|
} else {
|
status.set(isRunning);
|
}
|
log.debug("相机[{}]运行状态已设置:{}", cameraId, isRunning ? "运行中" : "已停止");
|
}
|
|
public static void removeRunningStatus(String cameraId) {
|
if (cameraId == null) return;
|
cameraRunningMap.remove(cameraId);
|
log.debug("相机[{}]运行状态已移除", cameraId);
|
}
|
|
// ===================== 【核心:停止推流线程】 =====================
|
public static void stopRunning(String cameraId) {
|
setRunningStatus(cameraId, false);
|
}
|
|
// ===================== 【核心:清空所有缓存】 =====================
|
public static void clearAll() {
|
cameraRunningMap.clear();
|
log.warn("已清空所有相机运行状态缓存");
|
}
|
}
|