@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
63 lines • 1.81 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NetServer = exports.WebSocketWrapper = exports.WebSocketServerWrapper = void 0;
/**
* This is just a simple layer to allow me to mock the server's behavior in tests.
*/
const net_1 = __importDefault(require("net"));
const ws_1 = require("ws");
const server_1 = require("./server");
class WebSocketServerWrapper {
server;
connectHandler;
onConnect(handler) {
this.connectHandler = handler;
}
start(port) {
this.server = new ws_1.WebSocketServer({ port, maxPayload: 1024 * 1024 * 1024 * 1024 });
server_1.serverLog.info('WebSocket-Server wrapper is active!');
this.server.on('connection', c => this.connectHandler?.(new WebSocketWrapper(c)));
}
}
exports.WebSocketServerWrapper = WebSocketServerWrapper;
class WebSocketWrapper {
socket;
remoteAddress;
remotePort;
constructor(socket) {
this.socket = socket;
this.remoteAddress = socket.url;
}
write(data) {
this.socket.send(data);
}
end() {
this.socket.close();
}
on(event, listener) {
if (event === 'data') {
this.socket.on('message', listener);
}
else {
this.socket.on(event, listener);
}
}
}
exports.WebSocketWrapper = WebSocketWrapper;
class NetServer {
server;
constructor() {
this.server = net_1.default.createServer();
}
onConnect(handler) {
this.server.on('connection', handler);
}
start(port) {
this.server.listen(port);
}
}
exports.NetServer = NetServer;
//# sourceMappingURL=net.js.map