| 123456789101112131415161718192021222324252627282930313233343536373839 |
- 'use strict'
- const { MathFloor, NumberIsInteger } = require('../../ours/primordials')
- const { validateInteger } = require('../validators')
- const { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes
- let defaultHighWaterMarkBytes = 16 * 1024
- let defaultHighWaterMarkObjectMode = 16
- function highWaterMarkFrom(options, isDuplex, duplexKey) {
- return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null
- }
- function getDefaultHighWaterMark(objectMode) {
- return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes
- }
- function setDefaultHighWaterMark(objectMode, value) {
- validateInteger(value, 'value', 0)
- if (objectMode) {
- defaultHighWaterMarkObjectMode = value
- } else {
- defaultHighWaterMarkBytes = value
- }
- }
- function getHighWaterMark(state, options, duplexKey, isDuplex) {
- const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)
- if (hwm != null) {
- if (!NumberIsInteger(hwm) || hwm < 0) {
- const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'
- throw new ERR_INVALID_ARG_VALUE(name, hwm)
- }
- return MathFloor(hwm)
- }
- // Default value
- return getDefaultHighWaterMark(state.objectMode)
- }
- module.exports = {
- getHighWaterMark,
- getDefaultHighWaterMark,
- setDefaultHighWaterMark
- }
|