UNPKG

pg-server

Version:

Postgres DB server emulator, proxy or honeypot

48 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bindSocket = exports.createAdvancedServer = void 0; const net_1 = require("net"); const commands_1 = require("./protocol/commands"); const command_parser_1 = require("./protocol/command-parser"); const response_writer_1 = require("./protocol/response-writer"); const utils_1 = require("./utils"); /** * * @param settings */ function createAdvancedServer(ctor) { return (0, net_1.createServer)(function (socket) { var _a; const session = new ctor(); (_a = session.onConnect) === null || _a === void 0 ? void 0 : _a.call(session, socket); bindSocket(socket, session.onCommand.bind(session)); }); } exports.createAdvancedServer = createAdvancedServer; function bindSocket(socket, handler) { if (utils_1.isDebug) { function logArgs(on) { return (...args) => console.log('💻 ' + on, ...args); } socket.on('close', logArgs('close')); socket.on('drain', logArgs('drain')); socket.on('end', logArgs('end')); socket.on('error', logArgs('error')); socket.on('lookup', logArgs('lookup')); } const writer = new response_writer_1.ResponseWriter(socket); const ser = new command_parser_1.CommandParser(c => { if (utils_1.isDebug) { console.log('👉 CMD:', (0, commands_1.commandToStr)(c.command.type), c.command); } handler(c, writer); }); socket.on('data', data => { ser.parse(data); }); // disable Nagle's algorithm socket.setNoDelay(true); return { writer }; } exports.bindSocket = bindSocket; //# sourceMappingURL=server.js.map