UNPKG

node-web-mvc

Version:
56 lines (55 loc) 2.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRawValues = getRawValues; const http_1 = require("http"); const WorkerSocket_1 = __importDefault(require("./WorkerSocket")); const WorkerInvoker_1 = __importDefault(require("./WorkerInvoker")); function getRawValues(raw) { const data = {}; for (let n = 0; n < raw.length; n += 2) { data[raw[n]] = raw[n + 1]; } return data; } class WorkerIncomingMessage extends http_1.IncomingMessage { constructor(options) { super(new WorkerSocket_1.default(options.port, 'requestSocket', options.request.socket.address)); const meta = options.request; this.url = meta.url; this.workerPort = options.port; this.method = meta.method; this.rawHeaders = meta.rawHeaders; this.rawTrailers = meta.rawTrailers; this.httpVersion = meta.httpVersion; this.httpVersionMajor = meta.httpVersionMajor; this.httpVersionMinor = meta.httpVersionMinor; this.headers = getRawValues(this.rawHeaders); this.trailers = getRawValues(this.rawTrailers); Object.defineProperty(this, 'readableEncoding', { value: this.readableEncoding }); this.invoker = new WorkerInvoker_1.default(options.port); } addListener(event, listener) { this.invoker.addEventListener('request', event, listener); return this; } once(event, listener) { this.invoker.addEventListener('request', event, listener, true); return this; } on(event, listener) { if (event == 'data') { process.nextTick(() => this.addListener(event, listener)); } else { this.addListener(event, listener); } return this; } read(size) { return this.invoker.invoke('request', 'read', [size]); } } exports.default = WorkerIncomingMessage;