BufferScheduler class
Diese Klasse akzeptiert einen Node.js lesbaren Datenstrom als Eingabe und liest Daten aus dem Datenstrom in der internen Pufferstruktur, bis sie maxBuffers erreicht. Jeder verfügbare Puffer versucht, ausgehenden Handler auszulösen.
Die interne Pufferstruktur enthält ein eingehendes Pufferarray und ein ausgehendes Pufferarray. Das Array des eingehenden Puffers enthält die "leeren" Puffer, die mit neuen eingehenden Daten gefüllt werden können. Das ausgehende Array enthält die gefüllten Puffer, die von outgoingHandler behandelt werden sollen. Jede oben genannte Puffergröße wird durch ParameterpufferSize definiert.
NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING
NUM_OF_ALL_BUFFERS kleiner oder gleich maxBuffers
TIPPS ZUR LEISTUNGSVERBESSERUNG:
- Für den Eingabestream highWaterMark ist es besser, den gleichen Wert mit dem bufferSize-Parameter festzulegen, wodurch Buffer.concat()-Operationen vermieden werden.
- concurrency sollte einen kleineren Wert als maxBuffers festlegen, was hilfreich ist, um die Wahrscheinlichkeit zu verringern, dass ein ausgehender Handler auf die Streamdaten wartet. in diesem Fall werden ausgehende Handler blockiert. Die ausgehende Warteschlange sollte nicht leer sein.
Konstruktoren
| Buffer |
Erstellt eine Instanz von BufferScheduler. |
Methoden
| do() | Starten Sie den Scheduler, gibt einen Fehler zurück, wenn der Datenstrom eines der ausgehenden Handler einen Fehler zurückgibt. |
Details zum Konstruktor
BufferScheduler(ReadableStream, number, number, OutgoingHandler, number, BufferEncoding)
Erstellt eine Instanz von BufferScheduler.
new BufferScheduler(readable: ReadableStream, bufferSize: number, maxBuffers: number, outgoingHandler: OutgoingHandler, concurrency: number, encoding?: BufferEncoding)
Parameter
- readable
-
ReadableStream
Ein Node.js lesbarer Datenstrom
- bufferSize
-
number
Puffergröße jedes verwalteten Puffers
- maxBuffers
-
number
Anzahl der Puffer, die zugewiesen werden können
- outgoingHandler
- OutgoingHandler
Eine asynchrone Funktion, die ausgelöst werden soll, wenn ein Puffer vollständig mit Datenstrom gefüllt ist
- concurrency
-
number
Parallelität der Ausführung ausgehender Handler (>0)
- encoding
-
BufferEncoding
[Fakultativ] Codierung des lesbaren Streams, wenn es sich um einen Zeichenfolgenstream handelt
Details zur Methode
do()
Starten Sie den Scheduler, gibt einen Fehler zurück, wenn der Datenstrom eines der ausgehenden Handler einen Fehler zurückgibt.
function do(): Promise<void>
Gibt zurück
Promise<void>