@perion/net
Version:
A few networking utilities for MapleStory server development
26 lines • 777 B
JavaScript
const fs = require('fs');
const path = require('path');
class Delegator {
constructor(dir, protocol) {
this.handlers = {};
this.protocol = protocol;
for (const file of fs.readdirSync(path.resolve(dir))) {
try {
const Class = require(path.resolve(dir + file));
const baseHandler = new Class();
this.handlers[baseHandler.opcode] = baseHandler;
} catch (err) {
throw err;
}
}
}
delegate({packet, socket}) {
if (!(packet.opcode in this.handlers)) {
// console.log(`Unhandled opcode ${packet.opcode}`);
// throw new Error(`Unhandled opcode: ${opcode}`);
return false;
}
return this.handlers[packet.opcode].handle({packet, socket}, this.protocol);
}
}
module.exports = Delegator;