UNPKG

padlocal-client-ts

Version:
55 lines 3.09 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SocketStreamHandler = void 0; const StreamHandler_1 = require("./StreamHandler"); const padlocal_pb_1 = require("../proto/padlocal_pb"); const SocketClient_1 = require("./SocketClient"); const ByteUtils_1 = require("../utils/ByteUtils"); const SerialExecutor_1 = require("../utils/SerialExecutor"); class SocketStreamHandler extends StreamHandler_1.StreamHandler { constructor(request) { super(request); this._callbackExecutor = new SerialExecutor_1.SerialExecutor(); } onRequest(wechatStreamRequest) { const socketRequest = wechatStreamRequest.getSocketrequest(); if (socketRequest.getHost()) { this._host = socketRequest.getHost(); } if (this._sendDataBuffer) { this._sendDataBuffer = ByteUtils_1.joinBytes(this._sendDataBuffer, Buffer.from(socketRequest.getPayload())); } else { this._sendDataBuffer = Buffer.from(socketRequest.getPayload()); } if (wechatStreamRequest.getEof()) { this._socketClient = new SocketClient_1.SocketClient(this._host.getHost(), this._host.getPort(), this._request.traceId, { onConnect: () => __awaiter(this, void 0, void 0, function* () { yield this._callbackExecutor.execute(() => __awaiter(this, void 0, void 0, function* () { yield this.sendResponse(new padlocal_pb_1.WeChatStreamResponse().setSocketresponse(new padlocal_pb_1.WeChatSocketResponse().setSocketreset(true))); })); }), onReceive: (data) => __awaiter(this, void 0, void 0, function* () { return new Promise((resolve) => { this._callbackExecutor.execute(() => __awaiter(this, void 0, void 0, function* () { const responseReply = yield this.sendResponse(new padlocal_pb_1.WeChatStreamResponse().setSocketresponse(new padlocal_pb_1.WeChatSocketResponse().setPayload(data))); resolve(responseReply.getEof()); })); }); }), }); this._socketClient.send(this._sendDataBuffer).then(); } } } exports.SocketStreamHandler = SocketStreamHandler; //# sourceMappingURL=SocketStreamHandler.js.map