Compartilhar via


BufferScheduler class

Essa classe aceita uma Node.js fluxo legível como entrada e continua lendo dados do fluxo para a estrutura interna do buffer até atingir maxBuffers. Cada buffer disponível tentará disparar outgoingHandler.

A estrutura de buffer interno inclui uma matriz de buffer de entrada e uma matriz de buffer de saída. A matriz de buffer de entrada inclui os buffers "vazios" podem ser preenchidos com novos dados de entrada. A matriz de saída inclui os buffers preenchidos a serem manipulados pelo outgoingHandler. Cada tamanho de buffer acima é definido por bufferSize de parâmetro.

NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING

NUM_OF_ALL_BUFFERS menor ou igual a maxBuffers

DICAS DE MELHORIA DE DESEMPENHO:

  1. O fluxo de entrada highWaterMark é melhor definir um mesmo valor com o parâmetro bufferSize, o que evitará operações buffer.concat().
  2. a simultaneidade deve definir um valor menor do que maxBuffers, o que é útil para reduzir a possibilidade quando um manipulador de saída aguarda os dados do fluxo. nessa situação, os manipuladores de saída são bloqueados. A fila de saída não deve estar vazia.

Construtores

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

Cria uma instância de BufferScheduler.

Métodos

do()

Inicie o agendador e retornará o erro quando o fluxo de qualquer um dos OutgoingHandlers retornar erro.

Detalhes do construtor

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

Cria uma instância de BufferScheduler.

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

Parâmetros

readable

ReadableStream

Um fluxo legível Node.js

bufferSize

number

Tamanho do buffer de cada buffer mantido

maxBuffers

number

Quantos buffers podem ser alocados

outgoingHandler
OutgoingHandler

Uma função assíncrona agendada para ser disparada quando um buffer totalmente preenchido com dados de fluxo

concurrency

number

Simultaneidade da execução de outgoingHandlers (>0)

encoding

BufferEncoding

[Opcional] Codificação de fluxo legível quando é um fluxo de cadeia de caracteres

Detalhes do método

do()

Inicie o agendador e retornará o erro quando o fluxo de qualquer um dos OutgoingHandlers retornar erro.

function do(): Promise<void>

Retornos

Promise<void>