fase(8): sqlite job queue system
This commit is contained in:
18
dist/main.js
vendored
18
dist/main.js
vendored
@@ -36,6 +36,10 @@ const FuzzingEngineAdapter_1 = require("./modules/fuzzing/infrastructure/adapter
|
||||
const RunFuzzCommand_1 = require("./modules/fuzzing/application/commands/RunFuzzCommand");
|
||||
const OnActionExecuted_1 = require("./modules/fuzzing/application/event-handlers/OnActionExecuted");
|
||||
const InMemoryFuzzSessionRepository_1 = require("./modules/fuzzing/infrastructure/repositories/InMemoryFuzzSessionRepository");
|
||||
// Job queue
|
||||
const SQLiteJobQueue_1 = require("./jobs/SQLiteJobQueue");
|
||||
const ExplorationWorker_1 = require("./jobs/workers/ExplorationWorker");
|
||||
const ReportWorker_1 = require("./jobs/workers/ReportWorker");
|
||||
// API + Realtime
|
||||
const server_1 = require("./api/server");
|
||||
const SocketGateway_1 = require("./realtime/SocketGateway");
|
||||
@@ -89,18 +93,23 @@ async function bootstrap() {
|
||||
fuzzingDeps: { runFuzz, repository: fuzzRepo },
|
||||
});
|
||||
const httpServer = http_1.default.createServer(app);
|
||||
// 11. Socket.io + gateway
|
||||
// 11. Job queue
|
||||
const jobQueue = new SQLiteJobQueue_1.SQLiteJobQueue(db, logger, config.jobs.pollIntervalMs);
|
||||
jobQueue.registerHandler(ExplorationWorker_1.EXPLORATION_JOB_TYPE, (0, ExplorationWorker_1.createExplorationJobHandler)({ sessionRepo, eventBus, logger }));
|
||||
jobQueue.registerHandler(ReportWorker_1.REPORT_JOB_TYPE, (0, ReportWorker_1.createReportJobHandler)({ logger }));
|
||||
jobQueue.start();
|
||||
// 12. Socket.io + gateway
|
||||
const io = new socket_io_1.Server(httpServer, {
|
||||
cors: { origin: config.cors.origin, credentials: true },
|
||||
});
|
||||
const gateway = new SocketGateway_1.SocketGateway(io, eventBus, logger);
|
||||
gateway.start();
|
||||
// 12. Start listening
|
||||
// 13. Start listening
|
||||
await new Promise((resolve) => {
|
||||
httpServer.listen(config.port, config.host, resolve);
|
||||
});
|
||||
logger.info({ port: config.port, host: config.host }, 'ABE server ready');
|
||||
// 13. Graceful shutdown
|
||||
// 14. Graceful shutdown
|
||||
let shuttingDown = false;
|
||||
async function shutdown(signal) {
|
||||
if (shuttingDown)
|
||||
@@ -111,6 +120,9 @@ async function bootstrap() {
|
||||
httpServer.close();
|
||||
// Close socket.io
|
||||
io.close();
|
||||
// Stop job queue and wait for active jobs
|
||||
jobQueue.pause();
|
||||
await jobQueue.waitForActive(30000);
|
||||
// Close database
|
||||
try {
|
||||
await db.destroy();
|
||||
|
||||
Reference in New Issue
Block a user