Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
fs: move constants to internal/fs/utils.js
Refs: #38004 (comment)
PR-URL: #38061
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Nitzan Uziely <linkgoron@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Loading branch information
@@ -24,10 +24,6 @@
'use strict' ;
// Most platforms don't allow reads or writes >= 2 GB.
// See https://github.com/libuv/libuv/pull/1501.
const kIoMaxLength = 2 ** 31 - 1 ;
// When using FSReqCallback, make sure to create the object only *after* all
// parameter validation has happened, so that the objects are not kept in memory
// in case they are created but never used due to an exception.
@@ -90,6 +86,10 @@ const { FSReqCallback } = binding;
const { toPathIfFileURL } = require ( 'internal/url' ) ;
const internalUtil = require ( 'internal/util' ) ;
const {
constants : {
kIoMaxLength,
kMaxUserId,
} ,
copyObject,
Dirent,
emitRecursiveRmdirWarning,
@@ -136,8 +136,6 @@ const {
validateFunction,
validateInteger,
} = require ( 'internal/validators' ) ;
// 2 ** 32 - 1
const kMaxUserId = 4294967295 ;
let truncateWarn = true ;
let fs ;
@@ -1,16 +1,5 @@
'use strict' ;
// Most platforms don't allow reads or writes >= 2 GB.
// See https://github.com/libuv/libuv/pull/1501.
const kIoMaxLength = 2 ** 31 - 1 ;
const kReadFileBufferLength = 512 * 1024 ;
const kReadFileUnknownBufferLength = 64 * 1024 ;
const kWriteFileMaxChunkSize = 512 * 1024 ;
// 2 ** 32 - 1
const kMaxUserId = 4294967295 ;
const {
ArrayPrototypePush,
Error,
@@ -48,6 +37,13 @@ const {
const { isArrayBufferView } = require ( 'internal/util/types' ) ;
const { rimrafPromises } = require ( 'internal/fs/rimraf' ) ;
const {
constants : {
kIoMaxLength,
kMaxUserId,
kReadFileBufferLength,
kReadFileUnknownBufferLength,
kWriteFileMaxChunkSize,
} ,
copyObject,
emitRecursiveRmdirWarning,
getDirents,
@@ -6,6 +6,13 @@ const {
ReflectApply,
} = primordials ;
const {
constants : {
kReadFileBufferLength,
kReadFileUnknownBufferLength,
}
} = require ( 'internal/fs/utils' ) ;
const { Buffer } = require ( 'buffer' ) ;
const { FSReqCallback, close, read } = internalBinding ( 'fs' ) ;
@@ -15,15 +22,6 @@ const {
aggregateTwoErrors,
} = require ( 'internal/errors' ) ;
// Use 64kb in case the file type is not a regular file and thus do not know the
// actual file size. Increasing the value further results in more frequent over
// allocation for small files and consumes CPU time and memory that should be
// used else wise.
// Use up to 512kb per read otherwise to partition reading big files to prevent
// blocking other threads in case the available threads are all in use.
const kReadFileUnknownBufferLength = 64 * 1024 ;
const kReadFileBufferLength = 512 * 1024 ;
function readFileAfterRead ( err , bytesRead ) {
const context = this . context ;
@@ -120,6 +120,23 @@ const kMaximumCopyMode = COPYFILE_EXCL |
COPYFILE_FICLONE |
COPYFILE_FICLONE_FORCE ;
// Most platforms don't allow reads or writes >= 2 GB.
// See https://github.com/libuv/libuv/pull/1501.
const kIoMaxLength = 2 ** 31 - 1 ;
// Use 64kb in case the file type is not a regular file and thus do not know the
// actual file size. Increasing the value further results in more frequent over
// allocation for small files and consumes CPU time and memory that should be
// used else wise.
// Use up to 512kb per read otherwise to partition reading big files to prevent
// blocking other threads in case the available threads are all in use.
const kReadFileUnknownBufferLength = 64 * 1024 ;
const kReadFileBufferLength = 512 * 1024 ;
const kWriteFileMaxChunkSize = 512 * 1024 ;
const kMaxUserId = 2 ** 32 - 1 ;
const isWindows = process . platform === 'win32' ;
let fs ;
@@ -843,6 +860,13 @@ const validatePosition = hideStackFrames((position, name) => {
} ) ;
module . exports = {
constants : {
kIoMaxLength,
kMaxUserId,
kReadFileBufferLength,
kReadFileUnknownBufferLength,
kWriteFileMaxChunkSize,
} ,
assertEncoding,
BigIntStats, // for testing
copyObject,
Toggle all file notes
Toggle all file annotations