refactor: add TaskDispatcher for automatic task assignment to idle turtles
This commit is contained in:
@@ -4,6 +4,7 @@ import cors from 'cors';
|
|||||||
import { createServer } from 'http';
|
import { createServer } from 'http';
|
||||||
import * as db from './database.js';
|
import * as db from './database.js';
|
||||||
import { Turtle } from './Turtle.js';
|
import { Turtle } from './Turtle.js';
|
||||||
|
import { TaskDispatcher } from './TaskDispatcher.js';
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
const PORT = 3001;
|
const PORT = 3001;
|
||||||
@@ -78,6 +79,14 @@ for (const block of savedBlocks) {
|
|||||||
// Timeout for considering turtles offline (30 seconds)
|
// Timeout for considering turtles offline (30 seconds)
|
||||||
const TURTLE_TIMEOUT = 30000;
|
const TURTLE_TIMEOUT = 30000;
|
||||||
|
|
||||||
|
// Task dispatcher — automatically assigns pending tasks to idle turtles
|
||||||
|
const taskDispatcher = new TaskDispatcher({
|
||||||
|
turtles,
|
||||||
|
db,
|
||||||
|
broadcastToClients: (data) => broadcastToClients(data),
|
||||||
|
pollInterval: parseInt(process.env.DISPATCH_INTERVAL || '5000', 10),
|
||||||
|
});
|
||||||
|
|
||||||
// Broadcast to all web clients
|
// Broadcast to all web clients
|
||||||
function broadcastToClients(data) {
|
function broadcastToClients(data) {
|
||||||
const message = JSON.stringify(data);
|
const message = JSON.stringify(data);
|
||||||
|
|||||||
Reference in New Issue
Block a user