| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 'use strict';
- const {ERR_HTTP2_NO_SOCKET_MANIPULATION} = require('./errors.js');
- /* istanbul ignore file */
- /* https://github.com/nodejs/node/blob/6eec858f34a40ffa489c1ec54bb24da72a28c781/lib/internal/http2/compat.js#L195-L272 */
- const proxySocketHandler = {
- has(stream, property) {
- // Replaced [kSocket] with .socket
- const reference = stream.session === undefined ? stream : stream.session.socket;
- return (property in stream) || (property in reference);
- },
- get(stream, property) {
- switch (property) {
- case 'on':
- case 'once':
- case 'end':
- case 'emit':
- case 'destroy':
- return stream[property].bind(stream);
- case 'writable':
- case 'destroyed':
- return stream[property];
- case 'readable':
- if (stream.destroyed) {
- return false;
- }
- return stream.readable;
- case 'setTimeout': {
- const {session} = stream;
- if (session !== undefined) {
- return session.setTimeout.bind(session);
- }
- return stream.setTimeout.bind(stream);
- }
- case 'write':
- case 'read':
- case 'pause':
- case 'resume':
- throw new ERR_HTTP2_NO_SOCKET_MANIPULATION();
- default: {
- // Replaced [kSocket] with .socket
- const reference = stream.session === undefined ? stream : stream.session.socket;
- const value = reference[property];
- return typeof value === 'function' ? value.bind(reference) : value;
- }
- }
- },
- getPrototypeOf(stream) {
- if (stream.session !== undefined) {
- // Replaced [kSocket] with .socket
- return Reflect.getPrototypeOf(stream.session.socket);
- }
- return Reflect.getPrototypeOf(stream);
- },
- set(stream, property, value) {
- switch (property) {
- case 'writable':
- case 'readable':
- case 'destroyed':
- case 'on':
- case 'once':
- case 'end':
- case 'emit':
- case 'destroy':
- stream[property] = value;
- return true;
- case 'setTimeout': {
- const {session} = stream;
- if (session === undefined) {
- stream.setTimeout = value;
- } else {
- session.setTimeout = value;
- }
- return true;
- }
- case 'write':
- case 'read':
- case 'pause':
- case 'resume':
- throw new ERR_HTTP2_NO_SOCKET_MANIPULATION();
- default: {
- // Replaced [kSocket] with .socket
- const reference = stream.session === undefined ? stream : stream.session.socket;
- reference[property] = value;
- return true;
- }
- }
- }
- };
- module.exports = proxySocketHandler;
|