mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-01 17:57:36 +08:00
This updates Chai, Karma and Sinon. The breaking changes in Karma 6.0.0 don't affect us. DISABLE_THIRD_PARTY_CHECK=NPM update R=jacktfranklin@chromium.org Bug: none Change-Id: I77c2d4b1aeb1f0544d56c1f8a37e409a19352bfe Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2692906 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
111 lines
2.1 KiB
JavaScript
111 lines
2.1 KiB
JavaScript
const EventEmitter = require("events");
|
|
const parser_v4 = require("engine.io-parser");
|
|
const parser_v3 = require("./parser-v3/index");
|
|
const debug = require("debug")("engine:transport");
|
|
|
|
/**
|
|
* Noop function.
|
|
*
|
|
* @api private
|
|
*/
|
|
|
|
function noop() {}
|
|
|
|
class Transport extends EventEmitter {
|
|
/**
|
|
* Transport constructor.
|
|
*
|
|
* @param {http.IncomingMessage} request
|
|
* @api public
|
|
*/
|
|
constructor(req) {
|
|
super();
|
|
this.readyState = "open";
|
|
this.discarded = false;
|
|
this.protocol = req._query.EIO === "3" ? 3 : 4; // 4th revision by default
|
|
this.parser = this.protocol === 3 ? parser_v3 : parser_v4;
|
|
}
|
|
|
|
/**
|
|
* Flags the transport as discarded.
|
|
*
|
|
* @api private
|
|
*/
|
|
discard() {
|
|
this.discarded = true;
|
|
}
|
|
|
|
/**
|
|
* Called with an incoming HTTP request.
|
|
*
|
|
* @param {http.IncomingMessage} request
|
|
* @api private
|
|
*/
|
|
onRequest(req) {
|
|
debug("setting request");
|
|
this.req = req;
|
|
}
|
|
|
|
/**
|
|
* Closes the transport.
|
|
*
|
|
* @api private
|
|
*/
|
|
close(fn) {
|
|
if ("closed" === this.readyState || "closing" === this.readyState) return;
|
|
|
|
this.readyState = "closing";
|
|
this.doClose(fn || noop);
|
|
}
|
|
|
|
/**
|
|
* Called with a transport error.
|
|
*
|
|
* @param {String} message error
|
|
* @param {Object} error description
|
|
* @api private
|
|
*/
|
|
onError(msg, desc) {
|
|
if (this.listeners("error").length) {
|
|
const err = new Error(msg);
|
|
err.type = "TransportError";
|
|
err.description = desc;
|
|
this.emit("error", err);
|
|
} else {
|
|
debug("ignored transport error %s (%s)", msg, desc);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Called with parsed out a packets from the data stream.
|
|
*
|
|
* @param {Object} packet
|
|
* @api private
|
|
*/
|
|
onPacket(packet) {
|
|
this.emit("packet", packet);
|
|
}
|
|
|
|
/**
|
|
* Called with the encoded packet data.
|
|
*
|
|
* @param {String} data
|
|
* @api private
|
|
*/
|
|
onData(data) {
|
|
this.onPacket(this.parser.decodePacket(data));
|
|
}
|
|
|
|
/**
|
|
* Called upon transport close.
|
|
*
|
|
* @api private
|
|
*/
|
|
onClose() {
|
|
this.readyState = "closed";
|
|
this.emit("close");
|
|
}
|
|
}
|
|
|
|
module.exports = Transport;
|