次の方法で共有


BufferScheduler class

このクラスは、Node.js 読み取り可能ストリームを入力として受け取り、maxBuffers に到達するまでストリームから内部バッファー構造にデータを読み取り続けます。 使用可能なすべてのバッファーが outgoingHandler をトリガーしようとします。

内部バッファー構造には、受信バッファー配列と出力バッファー配列が含まれます。 受信バッファー配列には、新しい受信データを格納できる "空" バッファーが含まれています。 送信配列には、outgoingHandler によって処理される塗りつぶされたバッファーが含まれます。 上記のすべてのバッファー サイズは、パラメーター bufferSize によって定義されます。

NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING

NUM_OF_ALL_BUFFERS maxBuffers 以下

パフォーマンス向上のヒント:

  1. 入力ストリーム highWaterMark は、bufferSize パラメーターを使用して同じ値を設定することをお勧めします。これは、Buffer.concat() 操作を回避します。
  2. concurrency は maxBuffers よりも小さい値を設定する必要があるため、送信ハンドラーがストリーム データを待機する可能性を減らすのに役立ちます。 この状況では、送信ハンドラーがブロックされます。 送信キューを空にしないでください。

コンストラクター

BufferScheduler(ReadableStream, number, number, OutgoingHandler, number, BufferEncoding)

BufferScheduler のインスタンスを作成します。

メソッド

do()

スケジューラを起動すると、いずれかの outgoingHandlers のストリームからエラーが返されたときにエラーが返されます。

コンストラクターの詳細

BufferScheduler(ReadableStream, number, number, OutgoingHandler, number, BufferEncoding)

BufferScheduler のインスタンスを作成します。

new BufferScheduler(readable: ReadableStream, bufferSize: number, maxBuffers: number, outgoingHandler: OutgoingHandler, concurrency: number, encoding?: BufferEncoding)

パラメーター

readable

ReadableStream

Node.js 読み取り可能ストリーム

bufferSize

number

維持されているすべてのバッファーのバッファー サイズ

maxBuffers

number

割り当て可能なバッファーの数

outgoingHandler
OutgoingHandler

バッファーにストリーム データが完全に格納されたときにトリガーされるようにスケジュールされた非同期関数

concurrency

number

outgoingHandlers の実行のコンカレンシー (>0)

encoding

BufferEncoding

[オプション]文字列ストリームの場合の読み取り可能なストリームのエンコード

メソッドの詳細

do()

スケジューラを起動すると、いずれかの outgoingHandlers のストリームからエラーが返されたときにエラーが返されます。

function do(): Promise<void>

戻り値

Promise<void>