zlib: move, rename, document internal params() cb
Give the callback a more specific name, explain what it does and why it is necessary, and move it to a location much closer to its use site. PR-URL: https://github.com/nodejs/node/pull/23187 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
1f7b6a6cc9
commit
c0c58d5660
28
lib/zlib.js
28
lib/zlib.js
@ -156,17 +156,6 @@ function zlibOnError(message, errno) {
|
|||||||
self.emit('error', error);
|
self.emit('error', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
function flushCallback(level, strategy, callback) {
|
|
||||||
if (!this._handle)
|
|
||||||
assert(false, 'zlib binding closed');
|
|
||||||
this._handle.params(level, strategy);
|
|
||||||
if (!this._hadError) {
|
|
||||||
this._level = level;
|
|
||||||
this._strategy = strategy;
|
|
||||||
if (callback) callback();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 1. Returns false for undefined and NaN
|
// 1. Returns false for undefined and NaN
|
||||||
// 2. Returns true for finite numbers
|
// 2. Returns true for finite numbers
|
||||||
// 3. Throws ERR_INVALID_ARG_TYPE for non-numbers
|
// 3. Throws ERR_INVALID_ARG_TYPE for non-numbers
|
||||||
@ -352,13 +341,28 @@ Object.defineProperty(Zlib.prototype, 'bytesRead', {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// This callback is used by `.params()` to wait until a full flush happened
|
||||||
|
// before adjusting the parameters. In particular, the call to the native
|
||||||
|
// `params()` function should not happen while a write is currently in progress
|
||||||
|
// on the threadpool.
|
||||||
|
function paramsAfterFlushCallback(level, strategy, callback) {
|
||||||
|
if (!this._handle)
|
||||||
|
assert(false, 'zlib binding closed');
|
||||||
|
this._handle.params(level, strategy);
|
||||||
|
if (!this._hadError) {
|
||||||
|
this._level = level;
|
||||||
|
this._strategy = strategy;
|
||||||
|
if (callback) callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Zlib.prototype.params = function params(level, strategy, callback) {
|
Zlib.prototype.params = function params(level, strategy, callback) {
|
||||||
checkRangesOrGetDefault(level, 'level', Z_MIN_LEVEL, Z_MAX_LEVEL);
|
checkRangesOrGetDefault(level, 'level', Z_MIN_LEVEL, Z_MAX_LEVEL);
|
||||||
checkRangesOrGetDefault(strategy, 'strategy', Z_DEFAULT_STRATEGY, Z_FIXED);
|
checkRangesOrGetDefault(strategy, 'strategy', Z_DEFAULT_STRATEGY, Z_FIXED);
|
||||||
|
|
||||||
if (this._level !== level || this._strategy !== strategy) {
|
if (this._level !== level || this._strategy !== strategy) {
|
||||||
this.flush(Z_SYNC_FLUSH,
|
this.flush(Z_SYNC_FLUSH,
|
||||||
flushCallback.bind(this, level, strategy, callback));
|
paramsAfterFlushCallback.bind(this, level, strategy, callback));
|
||||||
} else {
|
} else {
|
||||||
process.nextTick(callback);
|
process.nextTick(callback);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user