BufferScheduler class
이 클래스는 Node.js 읽기 가능한 스트림을 입력으로 허용하고, maxBuffers에 도달할 때까지 스트림에서 내부 버퍼 구조로 데이터를 계속 읽습니다. 사용 가능한 모든 버퍼는 outgoingHandler를 트리거하려고 합니다.
내부 버퍼 구조에는 들어오는 버퍼 배열과 나가는 버퍼 배열이 포함됩니다. 들어오는 버퍼 배열에는 "빈" 버퍼를 새 들어오는 데이터로 채울 수 있습니다. 나가는 배열에는 outgoingHandler에서 처리할 채워진 버퍼가 포함됩니다. 위의 모든 버퍼 크기는 parameter bufferSize에 의해 정의됩니다.
NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING
maxBuffers보다 작거나 같은 NUM_OF_ALL_BUFFERS
성능 향상 팁:
- 입력 스트림 highWaterMark는 Buffer.concat() 작업을 방지하는 bufferSize 매개 변수를 사용하여 동일한 값을 설정하는 것이 좋습니다.
- 동시성은 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
outgoingHandlers 실행 동시성(>0)
- encoding
-
BufferEncoding
[선택 사항] 문자열 스트림일 때 Readable stream 의 인코딩
메서드 세부 정보
do()
스케줄러를 시작하고 나가는Handlers의 스트림이 오류를 반환할 때 오류를 반환합니다.
function do(): Promise<void>
반환
Promise<void>