mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
Finally remove node::EventEmitter
This commit is contained in:
@@ -19,9 +19,11 @@
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
var EventEmitter = exports.EventEmitter = process.EventEmitter;
|
||||
var isArray = Array.isArray;
|
||||
|
||||
function EventEmitter() { }
|
||||
exports.EventEmitter = EventEmitter;
|
||||
|
||||
// By default EventEmitters will print a warning if more than
|
||||
// 10 listeners are added to it. This is a useful default which
|
||||
// helps finding memory leaks.
|
||||
|
||||
@@ -62,7 +62,6 @@ extern "C" {
|
||||
# include <node_io_watcher.h>
|
||||
#endif
|
||||
#include <node_net.h>
|
||||
#include <node_events.h>
|
||||
#include <node_cares.h>
|
||||
#include <node_file.h>
|
||||
#include <node_http_parser.h>
|
||||
@@ -2022,7 +2021,6 @@ Handle<Object> SetupProcessObject(int argc, char *argv[]) {
|
||||
int i, j;
|
||||
|
||||
Local<FunctionTemplate> process_template = FunctionTemplate::New();
|
||||
node::EventEmitter::Initialize(process_template);
|
||||
|
||||
process = Persistent<Object>::New(process_template->GetFunction()->NewInstance());
|
||||
|
||||
@@ -2147,10 +2145,6 @@ Handle<Object> SetupProcessObject(int argc, char *argv[]) {
|
||||
|
||||
NODE_SET_METHOD(process, "binding", Binding);
|
||||
|
||||
// Assign the EventEmitter. It was created in main().
|
||||
process->Set(String::NewSymbol("EventEmitter"),
|
||||
EventEmitter::constructor_template->GetFunction());
|
||||
|
||||
return process;
|
||||
}
|
||||
|
||||
|
||||
10
src/node.js
10
src/node.js
@@ -27,10 +27,16 @@
|
||||
(function(process) {
|
||||
global = this;
|
||||
|
||||
var EventEmitter;
|
||||
|
||||
function startup() {
|
||||
|
||||
if (process.env.NODE_USE_UV == '1') process.useUV = true;
|
||||
|
||||
EventEmitter = NativeModule.require('events').EventEmitter;
|
||||
process.__proto__ = EventEmitter.prototype;
|
||||
process.EventEmitter = EventEmitter; // process.EventEmitter is deprecated
|
||||
|
||||
startup.globalVariables();
|
||||
startup.globalTimeouts();
|
||||
startup.globalConsole();
|
||||
@@ -226,8 +232,7 @@
|
||||
|
||||
// process.stderr
|
||||
|
||||
var events = NativeModule.require('events');
|
||||
var stderr = process.stderr = new events.EventEmitter();
|
||||
var stderr = process.stderr = new EventEmitter();
|
||||
stderr.writable = true;
|
||||
stderr.readable = false;
|
||||
stderr.write = process.binding('stdio').writeError;
|
||||
@@ -276,7 +281,6 @@
|
||||
startup.processSignalHandlers = function() {
|
||||
// Load events module in order to access prototype elements on process like
|
||||
// process.addListener.
|
||||
var events = NativeModule.require('events');
|
||||
var signalWatchers = {};
|
||||
var addListener = process.addListener;
|
||||
var removeListener = process.removeListener;
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
#include <node_events.h>
|
||||
#include <node.h>
|
||||
|
||||
namespace node {
|
||||
|
||||
using namespace v8;
|
||||
|
||||
Persistent<FunctionTemplate> EventEmitter::constructor_template;
|
||||
|
||||
static Persistent<String> events_symbol;
|
||||
|
||||
void EventEmitter::Initialize(Local<FunctionTemplate> ctemplate) {
|
||||
HandleScope scope;
|
||||
|
||||
constructor_template = Persistent<FunctionTemplate>::New(ctemplate);
|
||||
|
||||
constructor_template->SetClassName(String::NewSymbol("EventEmitter"));
|
||||
|
||||
events_symbol = NODE_PSYMBOL("_events");
|
||||
|
||||
// All other prototype methods are defined in events.js
|
||||
}
|
||||
|
||||
|
||||
bool EventEmitter::Emit(Handle<String> event, int argc, Handle<Value> argv[]) {
|
||||
HandleScope scope;
|
||||
// HandleScope not needed here because only called from one of the two
|
||||
// functions below
|
||||
Local<Value> events_v = handle_->Get(events_symbol);
|
||||
if (!events_v->IsObject()) return false;
|
||||
Local<Object> events = events_v->ToObject();
|
||||
|
||||
Local<Value> listeners_v = events->Get(event);
|
||||
|
||||
TryCatch try_catch;
|
||||
|
||||
if (listeners_v->IsFunction()) {
|
||||
// Optimized one-listener case
|
||||
Local<Function> listener = Local<Function>::Cast(listeners_v);
|
||||
|
||||
listener->Call(handle_, argc, argv);
|
||||
|
||||
if (try_catch.HasCaught()) {
|
||||
FatalException(try_catch);
|
||||
return false;
|
||||
}
|
||||
|
||||
} else if (listeners_v->IsArray()) {
|
||||
Local<Array> listeners = Local<Array>::Cast(listeners_v->ToObject()->Clone());
|
||||
|
||||
for (uint32_t i = 0; i < listeners->Length(); i++) {
|
||||
Local<Value> listener_v = listeners->Get(i);
|
||||
if (!listener_v->IsFunction()) continue;
|
||||
Local<Function> listener = Local<Function>::Cast(listener_v);
|
||||
|
||||
listener->Call(handle_, argc, argv);
|
||||
|
||||
if (try_catch.HasCaught()) {
|
||||
FatalException(try_catch);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace node
|
||||
@@ -1,44 +0,0 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
#ifndef SRC_EVENTS_H_
|
||||
#define SRC_EVENTS_H_
|
||||
|
||||
#include <node_object_wrap.h>
|
||||
#include <v8.h>
|
||||
|
||||
namespace node {
|
||||
|
||||
class EventEmitter : public ObjectWrap {
|
||||
public:
|
||||
static void Initialize(v8::Local<v8::FunctionTemplate> ctemplate);
|
||||
static v8::Persistent<v8::FunctionTemplate> constructor_template;
|
||||
|
||||
bool Emit(v8::Handle<v8::String> event,
|
||||
int argc,
|
||||
v8::Handle<v8::Value> argv[]);
|
||||
|
||||
protected:
|
||||
EventEmitter() : ObjectWrap () { }
|
||||
};
|
||||
|
||||
} // namespace node
|
||||
#endif // SRC_EVENTS_H_
|
||||
@@ -23,7 +23,6 @@
|
||||
#define SRC_FILE_H_
|
||||
|
||||
#include <node.h>
|
||||
#include <node_events.h>
|
||||
#include <v8.h>
|
||||
|
||||
namespace node {
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
#define NODE_SIGNAL_WATCHER_H_
|
||||
|
||||
#include <node.h>
|
||||
#include <node_events.h>
|
||||
|
||||
#include <v8.h>
|
||||
#include <ev.h>
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#define NODE_STAT_WATCHER_H_
|
||||
|
||||
#include <node.h>
|
||||
#include <node_events.h>
|
||||
#include <ev.h>
|
||||
|
||||
namespace node {
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
#include <node_stdio.h>
|
||||
#include <node_events.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
2
wscript
2
wscript
@@ -839,7 +839,6 @@ def build(bld):
|
||||
src/node_extensions.cc
|
||||
src/node_http_parser.cc
|
||||
src/node_constants.cc
|
||||
src/node_events.cc
|
||||
src/node_file.cc
|
||||
src/node_script.cc
|
||||
src/node_os.cc
|
||||
@@ -927,7 +926,6 @@ def build(bld):
|
||||
src/node.h
|
||||
src/node_object_wrap.h
|
||||
src/node_buffer.h
|
||||
src/node_events.h
|
||||
src/node_version.h
|
||||
""")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user