mirror of
https://github.com/nodejs/node.git
synced 2025-05-15 02:04:52 +00:00

Conflicts: ChangeLog Makefile deps/npm/AUTHORS deps/npm/html/api/bin.html deps/npm/html/api/bugs.html deps/npm/html/api/commands.html deps/npm/html/api/config.html deps/npm/html/api/deprecate.html deps/npm/html/api/docs.html deps/npm/html/api/edit.html deps/npm/html/api/explore.html deps/npm/html/api/help-search.html deps/npm/html/api/init.html deps/npm/html/api/install.html deps/npm/html/api/link.html deps/npm/html/api/load.html deps/npm/html/api/ls.html deps/npm/html/api/npm.html deps/npm/html/api/outdated.html deps/npm/html/api/owner.html deps/npm/html/api/pack.html deps/npm/html/api/prefix.html deps/npm/html/api/prune.html deps/npm/html/api/publish.html deps/npm/html/api/rebuild.html deps/npm/html/api/restart.html deps/npm/html/api/root.html deps/npm/html/api/run-script.html deps/npm/html/api/search.html deps/npm/html/api/shrinkwrap.html deps/npm/html/api/start.html deps/npm/html/api/stop.html deps/npm/html/api/submodule.html deps/npm/html/api/tag.html deps/npm/html/api/test.html deps/npm/html/api/uninstall.html deps/npm/html/api/unpublish.html deps/npm/html/api/update.html deps/npm/html/api/version.html deps/npm/html/api/view.html deps/npm/html/api/whoami.html deps/npm/html/doc/README.html deps/npm/html/doc/adduser.html deps/npm/html/doc/bin.html deps/npm/html/doc/bugs.html deps/npm/html/doc/build.html deps/npm/html/doc/bundle.html deps/npm/html/doc/cache.html deps/npm/html/doc/changelog.html deps/npm/html/doc/coding-style.html deps/npm/html/doc/completion.html deps/npm/html/doc/config.html deps/npm/html/doc/deprecate.html deps/npm/html/doc/developers.html deps/npm/html/doc/disputes.html deps/npm/html/doc/docs.html deps/npm/html/doc/edit.html deps/npm/html/doc/explore.html deps/npm/html/doc/faq.html deps/npm/html/doc/folders.html deps/npm/html/doc/help-search.html deps/npm/html/doc/help.html deps/npm/html/doc/index.html deps/npm/html/doc/init.html deps/npm/html/doc/install.html deps/npm/html/doc/json.html deps/npm/html/doc/link.html deps/npm/html/doc/list.html deps/npm/html/doc/npm.html deps/npm/html/doc/outdated.html deps/npm/html/doc/owner.html deps/npm/html/doc/pack.html deps/npm/html/doc/prefix.html deps/npm/html/doc/prune.html deps/npm/html/doc/publish.html deps/npm/html/doc/rebuild.html deps/npm/html/doc/registry.html deps/npm/html/doc/removing-npm.html deps/npm/html/doc/restart.html deps/npm/html/doc/root.html deps/npm/html/doc/run-script.html deps/npm/html/doc/scripts.html deps/npm/html/doc/search.html deps/npm/html/doc/semver.html deps/npm/html/doc/shrinkwrap.html deps/npm/html/doc/star.html deps/npm/html/doc/start.html deps/npm/html/doc/stop.html deps/npm/html/doc/submodule.html deps/npm/html/doc/tag.html deps/npm/html/doc/test.html deps/npm/html/doc/uninstall.html deps/npm/html/doc/unpublish.html deps/npm/html/doc/update.html deps/npm/html/doc/version.html deps/npm/html/doc/view.html deps/npm/html/doc/whoami.html deps/npm/man/man1/npm.1 deps/npm/man/man3/npm.3 deps/npm/package.json doc/api/url.markdown lib/http.js src/node_version.h test/simple/test-fs-sync-fd-leak.js
83 lines
2.1 KiB
JavaScript
83 lines
2.1 KiB
JavaScript
// the parent class for all fstreams.
|
|
|
|
module.exports = Abstract
|
|
|
|
var Stream = require("stream").Stream
|
|
, inherits = require("inherits")
|
|
|
|
function Abstract () {
|
|
Stream.call(this)
|
|
}
|
|
|
|
inherits(Abstract, Stream)
|
|
|
|
Abstract.prototype.on = function (ev, fn) {
|
|
if (ev === "ready" && this.ready) {
|
|
process.nextTick(fn.bind(this))
|
|
} else {
|
|
Stream.prototype.on.call(this, ev, fn)
|
|
}
|
|
return this
|
|
}
|
|
|
|
Abstract.prototype.destroy = function () {}
|
|
|
|
Abstract.prototype.warn = function (msg, code) {
|
|
var me = this
|
|
, er = decorate(msg, code, me)
|
|
if (!me.listeners("warn")) {
|
|
console.error("%s %s\n" +
|
|
"path = %s\n" +
|
|
"syscall = %s\n" +
|
|
"fstream_type = %s\n" +
|
|
"fstream_path = %s\n" +
|
|
"fstream_unc_path = %s\n" +
|
|
"fstream_class = %s\n" +
|
|
"fstream_stack =\n%s\n",
|
|
code || "UNKNOWN",
|
|
er.stack,
|
|
er.path,
|
|
er.syscall,
|
|
er.fstream_type,
|
|
er.fstream_path,
|
|
er.fstream_unc_path,
|
|
er.fstream_class,
|
|
er.fstream_stack.join("\n"))
|
|
} else {
|
|
me.emit("warn", er)
|
|
}
|
|
}
|
|
|
|
Abstract.prototype.info = function (msg, code) {
|
|
var me = this
|
|
if (!me.listeners("info")) return
|
|
me.emit("info", msg, code)
|
|
}
|
|
|
|
Abstract.prototype.error = function (msg, code, th) {
|
|
var er = decorate(msg, code, this)
|
|
if (th) throw er
|
|
else this.emit("error", er)
|
|
}
|
|
|
|
function decorate (er, code, me) {
|
|
if (!(er instanceof Error)) er = new Error(er)
|
|
er.code = er.code || code
|
|
er.path = er.path || me.path
|
|
er.fstream_type = er.fstream_type || me.type
|
|
er.fstream_path = er.fstream_path || me.path
|
|
if (me._path !== me.path) {
|
|
er.fstream_unc_path = er.fstream_unc_path || me._path
|
|
}
|
|
if (me.linkpath) {
|
|
er.fstream_linkpath = er.fstream_linkpath || me.linkpath
|
|
}
|
|
er.fstream_class = er.fstream_class || me.constructor.name
|
|
er.fstream_stack = er.fstream_stack ||
|
|
new Error().stack.split(/\n/).slice(3).map(function (s) {
|
|
return s.replace(/^ at /, "")
|
|
})
|
|
|
|
return er
|
|
}
|