UNPKG

node-opcua-transport

Version:

pure nodejs OPCUA SDK - module transport

70 lines 2.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FakeServer = void 0; const node_events_1 = require("node:events"); const node_net_1 = __importDefault(require("node:net")); const node_opcua_assert_1 = require("node-opcua-assert"); class FakeServer extends node_events_1.EventEmitter { port; url; tcpServer; _serverSocket; _responses; constructor({ port }) { super(); this.port = port; this.url = `opc.tcp://localhost:${port}`; this.tcpServer = new node_net_1.default.Server(); this._serverSocket = undefined; this.tcpServer.on("connection", (socket) => { (0, node_opcua_assert_1.assert)(!this._serverSocket, " already connected"); this._serverSocket = socket; this._serverSocket.on("data", (data) => { const func = this.popResponse(); if (func && this._serverSocket) { func(this._serverSocket, data); } }); this._serverSocket.on("err", (_err) => { // console.log(" @@@@ socket err ",err); }); this._serverSocket.on("close", (_err) => { // console.log(" @@@@ socket closed ",err); }); this._serverSocket.on("end", (err) => { // console.log(" @@@@ socket end ",err); this.emit("end", err); }); }); } getSocket() { // c8 ignore next if (!this._serverSocket) { throw new Error("No socket available"); } return this._serverSocket; } initialize(done) { this.tcpServer.listen(this.port, () => { done(); }); } shutdown(callback) { this.tcpServer.close(callback); } popResponse() { if (!this._responses) { return null; } return this._responses.shift(); } pushResponse(func) { this._responses = this._responses || []; this._responses.push(func); } } exports.FakeServer = FakeServer; //# sourceMappingURL=fake_server.js.map