BufferScheduler class
Этот класс принимает поток Node.js для чтения в качестве входных данных и сохраняет чтение данных из потока во внутреннюю структуру буфера, пока не достигнет maxBuffers. Каждый доступный буфер попытается активировать исходящийHandler.
Внутренняя структура буфера включает входящий массив буфера и исходящий массив буферов. Входящий массив буферов включает в себя "пустые" буферы, которые можно заполнить новыми входящими данными. Исходящий массив включает заполненные буферы, которые обрабатываются исходящимHandler. Каждый указанный выше размер буфера определяется параметром bufferSize.
NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING
NUM_OF_ALL_BUFFERS меньше или равно maxBuffers
СОВЕТЫ ПО УЛУЧШЕНИЮ ПРОИЗВОДИТЕЛЬНОСТИ:
- Входной поток highWaterMark лучше задать то же значение с параметром bufferSize, что позволит избежать операций Buffer.concat().
- concurrency должен устанавливать меньшее значение, чем maxBuffers, что полезно для снижения вероятности того, что исходящий обработчик ожидает потоковых данных. В этой ситуации исходящие обработчики блокируются. Исходящая очередь не должна быть пустой.
Конструкторы
| Buffer |
Создает экземпляр BufferScheduler. |
Методы
| do() | Запустите планировщик, будет возвращать ошибку, когда поток любого исходящегоHandlers возвращает ошибку. |
Сведения о конструкторе
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
Параллелизм выполнения исходящихHandlers (>0)
- encoding
-
BufferEncoding
[Необязательный] Кодирование читаемого потока, когда это строковый поток
Сведения о методе
do()
Запустите планировщик, будет возвращать ошибку, когда поток любого исходящегоHandlers возвращает ошибку.
function do(): Promise<void>
Возвращаемое значение
Promise<void>