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 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("已清空所有相机运行状态缓存"); } }