mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Domain feature
This is a squashed commit of the main work done on the domains-wip branch.
The original commit messages are preserved for posterity:
* Implicitly add EventEmitters to active domain
* Implicitly add timers to active domain
* domain: add members, remove ctor cb
* Don't hijack bound callbacks for Domain error events
* Add dispose method
* Add domain.remove(ee) method
* A test of multiple domains in process at once
* Put the active domain on the process object
* Only intercept error arg if explicitly requested
* Typo
* Don't auto-add new domains to the current domain
While an automatic parent/child relationship is sort of neat,
and leads to some nice error-bubbling characteristics, it also
results in keeping a reference to every EE and timer created,
unless domains are explicitly disposed of.
* Explicitly adding one domain to another is still fine, of course.
* Don't allow circular domain->domain memberships
* Disposing of a domain removes it from its parent
* Domain disposal turns functions into no-ops
* More documentation of domains
* More thorough dispose() semantics
* An example using domains in an HTTP server
* Don't handle errors on a disposed domain
* Need to push, even if the same domain is entered multiple times
* Array.push is too slow for the EE Ctor
* lint domain
* domain: docs
* Also call abort and destroySoon to clean up event emitters
* domain: Wrap destroy methods in a try/catch
* Attach tick callbacks to active domain
* domain: Only implicitly bind timers, not explicitly
* domain: Don't fire timers when disposed.
* domain: Simplify naming so that MakeCallback works on Timers
* Add setInterval and nextTick to domain test
* domain: Make stack private
This commit is contained in:
12
src/node.js
12
src/node.js
@@ -235,7 +235,13 @@
|
||||
nextTickQueue = [];
|
||||
|
||||
try {
|
||||
for (var i = 0; i < l; i++) q[i]();
|
||||
for (var i = 0; i < l; i++) {
|
||||
var tock = q[i];
|
||||
var callback = tock.callback;
|
||||
if (tock.domain) tock.domain.enter();
|
||||
callback();
|
||||
if (tock.domain) tock.domain.exit();
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
if (i + 1 < l) {
|
||||
@@ -249,7 +255,9 @@
|
||||
};
|
||||
|
||||
process.nextTick = function(callback) {
|
||||
nextTickQueue.push(callback);
|
||||
var tock = { callback: callback };
|
||||
if (process.domain) tock.domain = process.domain;
|
||||
nextTickQueue.push(tock);
|
||||
process._needTickCallback();
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user