UNPKG

@tgsnake/core

Version:

Pure Telegram MTProto library for nodejs

48 lines (47 loc) 1.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TCPAbridged = void 0; const platform_node_js_1 = require("../../platform.node.js"); const tcp_js_1 = require("./tcp.js"); const helpers_js_1 = require("../../helpers.js"); class TCPAbridged extends tcp_js_1.TCP { constructor() { super(); } async connect(ip, port, proxy, dcId) { await super.connect(ip, port, proxy, dcId); return await super.send(platform_node_js_1.Buffer.from('ef', 'hex')); } async send(data) { const length = Math.round(platform_node_js_1.Buffer.byteLength(data) / 4); if (length <= 126) { const mark = platform_node_js_1.Buffer.from([length]); return await super.send(platform_node_js_1.Buffer.concat([mark, data])); } else { return await super.send(platform_node_js_1.Buffer.concat([ platform_node_js_1.Buffer.concat([ platform_node_js_1.Buffer.from('7f', 'hex'), (0, helpers_js_1.bigintToBuffer)(BigInt(length), 3), ]), data, ])); } } async recv(_length = 0) { let length = await super.recv(1); if (!length) return; if (length.equals(platform_node_js_1.Buffer.from('7f', 'hex'))) { length = await super.recv(3); if (!length) return; return await super.recv(platform_node_js_1.Buffer.concat([ length, platform_node_js_1.Buffer.alloc(1), ]).readInt32LE(0) * 4); } return await super.recv(length[0] * 4); } } exports.TCPAbridged = TCPAbridged;