mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 17:40:46 -04:00
gahew
This commit is contained in:
@@ -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,
|
||||
};
|
||||
Reference in New Issue
Block a user