This commit is contained in:
legop3
2026-04-28 19:53:10 -04:00
parent f13b85109e
commit 49f801330f
59 changed files with 686 additions and 401 deletions
+51
View File
@@ -0,0 +1,51 @@
// state
// Purpose: Defines the state module and the helpers/state used by this service unit.
// Scope: Keeps runtime behavior unchanged while isolating responsibilities into a clear module boundary.
const EventEmitter = require('events');
const driverQueues = new Map();
const activeDrivers = new Map();
const turnEvents = new EventEmitter();
const turnDeadlines = new Map();
const idleDeadlines = new Map();
const idleTimers = new Map();
const idleSkips = new Map();
const idleDisarmed = new Map();
function ensureQueue(roverId) {
if (!driverQueues.has(roverId)) {
driverQueues.set(roverId, { queue: [], current: null, timer: null });
}
return driverQueues.get(roverId);
}
function setActiveDriver(roverId, socketId) {
if (!socketId) {
activeDrivers.delete(roverId);
} else {
activeDrivers.set(roverId, socketId);
}
turnEvents.emit('activeDriver', { roverId, socketId });
}
function getActiveDrivers() {
const map = {};
activeDrivers.forEach((socketId, roverId) => {
map[roverId] = socketId;
});
return map;
}
module.exports = {
driverQueues,
activeDrivers,
turnEvents,
turnDeadlines,
idleDeadlines,
idleTimers,
idleSkips,
idleDisarmed,
ensureQueue,
setActiveDriver,
getActiveDrivers,
};