feat: integrate WorldBlockCache for efficient world block management and update logging
This commit is contained in:
@@ -5,6 +5,7 @@ import { createServer } from 'http';
|
||||
import * as db from './database.js';
|
||||
import { Turtle } from './Turtle.js';
|
||||
import { TaskDispatcher } from './TaskDispatcher.js';
|
||||
import { WorldBlockCache } from './WorldBlockCache.js';
|
||||
|
||||
const app = express();
|
||||
const PORT = 3001;
|
||||
@@ -49,14 +50,14 @@ db.initializeDatabase();
|
||||
// Load persisted data from database
|
||||
console.log('📂 Loading persisted data from database...');
|
||||
const savedHomes = db.getAllTurtleHomes();
|
||||
const savedBlocks = db.getWorldBlocks();
|
||||
const blockCount = db.getWorldBlockCount();
|
||||
console.log(` Loaded ${savedHomes.length} turtle homes`);
|
||||
console.log(` Loaded ${savedBlocks.length} world blocks`);
|
||||
console.log(` ${blockCount} world blocks in database (demand-loaded)`);
|
||||
|
||||
// Store connected web clients and turtle data
|
||||
const webClients = new Set();
|
||||
const turtles = new Map(); // turtleID -> Turtle instance
|
||||
const worldBlocks = new Map(); // "x,y,z" -> {name, metadata, discoveredBy, timestamp}
|
||||
const worldBlocks = new WorldBlockCache(db, parseInt(process.env.BLOCK_CACHE_SIZE || '50000', 10));
|
||||
const turtleHomes = new Map(); // turtleID -> {x, y, z} home position
|
||||
const turtleConfig = new Map(); // turtleID -> {maxDistance, facing, etc}
|
||||
|
||||
@@ -65,17 +66,6 @@ for (const home of savedHomes) {
|
||||
turtleHomes.set(home.turtle_id, { x: home.x, y: home.y, z: home.z });
|
||||
}
|
||||
|
||||
// Load saved blocks into memory
|
||||
for (const block of savedBlocks) {
|
||||
const key = `${block.x},${block.y},${block.z}`;
|
||||
worldBlocks.set(key, {
|
||||
name: block.block_name,
|
||||
metadata: block.metadata,
|
||||
discoveredBy: block.discovered_by,
|
||||
timestamp: block.discovered_at
|
||||
});
|
||||
}
|
||||
|
||||
// Timeout for considering turtles offline (30 seconds)
|
||||
const TURTLE_TIMEOUT = 30000;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user