simulation-backend/src/main/java/com/hivekion/room/RoomManager.java

94 lines
2.1 KiB
Java
Raw Normal View History

2025-09-17 13:58:20 +08:00
package com.hivekion.room;
2025-09-21 04:31:48 +08:00
import com.alibaba.fastjson2.JSON;
2025-09-18 10:47:37 +08:00
import com.hivekion.baseData.entity.Scenario;
2025-09-17 13:58:20 +08:00
import com.hivekion.room.bean.Room;
import com.hivekion.room.func.TaskAction;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
2025-09-18 13:51:58 +08:00
import java.util.concurrent.ScheduledExecutorService;
2025-09-21 04:31:48 +08:00
import lombok.extern.slf4j.Slf4j;
2025-09-17 13:58:20 +08:00
/**
* [类的简要说明]
* <p>
* [详细描述可选]
* <p>
*
* @author LiDongYU
* @since 2025/7/22
*/
2025-09-21 04:31:48 +08:00
@Slf4j
2025-09-17 13:58:20 +08:00
public class RoomManager {
private static final Map<String, Room> roomsMap = new ConcurrentHashMap<>();
2025-09-22 17:09:53 +08:00
public static void startRoom(String id, Scenario scenario, long duringTime) {
2025-09-18 11:38:15 +08:00
Room room = new Room(id, scenario);
2025-09-17 13:58:20 +08:00
roomsMap.put(id, room);
2025-09-22 17:09:53 +08:00
room.start(duringTime);
2025-09-17 13:58:20 +08:00
}
public static void stopRoom(String id) {
Room room = roomsMap.get(id);
if (room != null) {
room.stop();
}
}
public static void pauseRoom(String id) {
Room room = roomsMap.get(id);
if (room != null) {
room.pause();
}
}
public static void resumeRoom(String id) {
Room room = roomsMap.get(id);
if (room != null) {
room.resume();
}
}
public static void addAction(String id, long time, TaskAction action) {
2025-09-21 04:31:48 +08:00
log.info("增加任务::time::{},action::{}",time, JSON.toJSONString(action));
2025-09-17 13:58:20 +08:00
Room room = roomsMap.get(id);
if (room != null) {
room.addAction(time, action);
}
}
2025-09-18 11:38:15 +08:00
public static long getRoomDuringTime(String id) {
Room room = roomsMap.get(id);
if (room != null) {
return room.getDuringTime();
}
return 0;
}
2025-09-18 14:10:33 +08:00
public static void addFuture(ScheduledExecutorService future, String roomId) {
2025-09-18 13:51:58 +08:00
Room room = roomsMap.get(roomId);
if (room != null) {
room.addTaskReference(future);
}
}
2025-09-18 14:10:33 +08:00
public static boolean isRunning(String id) {
Room room = roomsMap.get(id);
if (room != null) {
return room.isRunning();
}
return false;
}
2025-09-20 15:07:45 +08:00
public static int getMag(String id){
Room room = roomsMap.get(id);
if (room != null) {
return room.getMag();
}
return 1;
}
2025-09-21 00:26:28 +08:00
public static Room getRoom(String id){
return roomsMap.get(id);
}
2025-09-17 13:58:20 +08:00
}