summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-10-25 16:17:07 +0200
committerAnna Henningsen <anna@addaleax.net>2019-10-28 14:34:25 +0100
commitb35181f877d5a92e8bb52eb071489f2a7d87494b (patch)
treec90e26cce8d93734912a03311c8ecbc68d93fded /lib
parent5783ed7667d2aab87d30ffddbb5cd7c1c5099cb6 (diff)
downloadandroid-node-v8-b35181f877d5a92e8bb52eb071489f2a7d87494b.tar.gz
android-node-v8-b35181f877d5a92e8bb52eb071489f2a7d87494b.tar.bz2
android-node-v8-b35181f877d5a92e8bb52eb071489f2a7d87494b.zip
fs: add `bufferSize` option to `fs.opendir()`
Add an option that controls the size of the internal buffer. Fixes: https://github.com/nodejs/node/issues/29941 PR-URL: https://github.com/nodejs/node/pull/30114 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/fs/dir.js16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/internal/fs/dir.js b/lib/internal/fs/dir.js
index fedd7ff8ed..90ab31fe5a 100644
--- a/lib/internal/fs/dir.js
+++ b/lib/internal/fs/dir.js
@@ -21,6 +21,9 @@ const {
getValidatedPath,
handleErrorFromBinding
} = require('internal/fs/utils');
+const {
+ validateUint32
+} = require('internal/validators');
const kDirHandle = Symbol('kDirHandle');
const kDirPath = Symbol('kDirPath');
@@ -39,9 +42,14 @@ class Dir {
this[kDirPath] = path;
this[kDirClosed] = false;
- this[kDirOptions] = getOptions(options, {
- encoding: 'utf8'
- });
+ this[kDirOptions] = {
+ bufferSize: 32,
+ ...getOptions(options, {
+ encoding: 'utf8'
+ })
+ };
+
+ validateUint32(this[kDirOptions].bufferSize, 'options.bufferSize', true);
this[kDirReadPromisified] =
internalUtil.promisify(this[kDirReadImpl]).bind(this, false);
@@ -88,6 +96,7 @@ class Dir {
this[kDirHandle].read(
this[kDirOptions].encoding,
+ this[kDirOptions].bufferSize,
req
);
}
@@ -105,6 +114,7 @@ class Dir {
const ctx = { path: this[kDirPath] };
const result = this[kDirHandle].read(
this[kDirOptions].encoding,
+ this[kDirOptions].bufferSize,
undefined,
ctx
);