1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.StreamDispatcher = void 0;
- var _dispatcher = require("./dispatcher");
- var _utils = require("../../utils");
- /**
- * Copyright (c) Microsoft Corporation.
- *
- * Licensed under the Apache License, Version 2.0 (the 'License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- class StreamDispatcher extends _dispatcher.Dispatcher {
- constructor(scope, stream) {
- super(scope, {
- guid: 'stream@' + (0, _utils.createGuid)(),
- stream
- }, 'Stream', {});
- // In Node v12.9.0+ we can use readableEnded.
- this._type_Stream = true;
- this._ended = false;
- stream.once('end', () => this._ended = true);
- stream.once('error', () => this._ended = true);
- }
- async read(params) {
- const stream = this._object.stream;
- if (this._ended) return {
- binary: Buffer.from('')
- };
- if (!stream.readableLength) {
- const readyPromise = new _utils.ManualPromise();
- const done = () => readyPromise.resolve();
- stream.on('readable', done);
- stream.on('end', done);
- stream.on('error', done);
- await readyPromise;
- stream.off('readable', done);
- stream.off('end', done);
- stream.off('error', done);
- }
- const buffer = stream.read(Math.min(stream.readableLength, params.size || stream.readableLength));
- return {
- binary: buffer || Buffer.from('')
- };
- }
- async close() {
- this._object.stream.destroy();
- }
- }
- exports.StreamDispatcher = StreamDispatcher;
|