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:
- O fluxo de entrada highWaterMark é melhor definir um mesmo valor com o parâmetro bufferSize, o que evitará operações buffer.concat().
- 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
Buffer |
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>