diff options
Diffstat (limited to 'node_modules/graceful-fs/graceful-fs.js')
-rw-r--r-- | node_modules/graceful-fs/graceful-fs.js | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/node_modules/graceful-fs/graceful-fs.js b/node_modules/graceful-fs/graceful-fs.js index 856fc66bf..5d136c27f 100644 --- a/node_modules/graceful-fs/graceful-fs.js +++ b/node_modules/graceful-fs/graceful-fs.js @@ -7,12 +7,10 @@ var fs = require("fs") if (fs.open === gracefulOpen) return var queue = [] - , curOpen = 0 , constants = require("constants") - exports = module.exports = fs - +fs._curOpen = 0 fs.MIN_MAX_OPEN = 64 fs.MAX_OPEN = 1024 @@ -39,17 +37,17 @@ function gracefulOpen (path, flags, mode, cb) { if (typeof mode === "function") cb = mode, mode = null if (typeof cb !== "function") cb = noop - if (curOpen >= fs.MAX_OPEN) { + if (fs._curOpen >= fs.MAX_OPEN) { queue.push(new OpenReq(path, flags, mode, cb)) setTimeout(flush) return } open(path, flags, mode, function (er, fd) { - if (er && er.code === "EMFILE" && curOpen > fs.MIN_MAX_OPEN) { + if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { // that was too many. reduce max, get back in queue. // this should only happen once in a great while, and only // if the ulimit -n is set lower than 1024. - fs.MAX_OPEN = curOpen - 1 + fs.MAX_OPEN = fs._curOpen - 1 return fs.open(path, flags, mode, cb) } cb(er, fd) @@ -58,33 +56,33 @@ function gracefulOpen (path, flags, mode, cb) { function open (path, flags, mode, cb) { cb = cb || noop - curOpen ++ + fs._curOpen ++ originalOpen.call(fs, path, flags, mode, function (er, fd) { - if (er) { - onclose() - } - + if (er) onclose() cb(er, fd) }) } fs.openSync = function (path, flags, mode) { - curOpen ++ - return originalOpenSync.call(fs, path, flags, mode) + var ret + try { + ret = originalOpenSync.call(fs, path, flags, mode) + fs._curOpen ++ + } finally {} + return ret } function onclose () { - curOpen -- + fs._curOpen -- flush() } function flush () { - while (curOpen < fs.MAX_OPEN) { + while (fs._curOpen < fs.MAX_OPEN) { var req = queue.shift() - if (!req) break + if (!req) return open(req.path, req.flags || "r", req.mode || 0777, req.cb) } - if (queue.length === 0) return } fs.close = function (fd, cb) { |