Finally remove node::EventEmitter
authorRyan Dahl <ry@tinyclouds.org>
Tue, 19 Jul 2011 08:46:38 +0000 (01:46 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Tue, 19 Jul 2011 08:46:38 +0000 (01:46 -0700)
lib/events.js
src/node.cc
src/node.js
src/node_events.cc [deleted file]
src/node_events.h [deleted file]
src/node_file.h
src/node_signal_watcher.h
src/node_stat_watcher.h
src/node_stdio.cc
wscript

index a7daaa2..675693f 100644 (file)
 // 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.
index aca5f6a..4f59762 100644 (file)
@@ -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;
 }
 
index e4a9de4..c733555 100644 (file)
 (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();
 
     // 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;
   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;
diff --git a/src/node_events.cc b/src/node_events.cc
deleted file mode 100644 (file)
index 8c0b5a6..0000000
+++ /dev/null
@@ -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
diff --git a/src/node_events.h b/src/node_events.h
deleted file mode 100644 (file)
index fc87189..0000000
+++ /dev/null
@@ -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_
index 6ac5a31..e98b115 100644 (file)
@@ -23,7 +23,6 @@
 #define SRC_FILE_H_
 
 #include <node.h>
-#include <node_events.h>
 #include <v8.h>
 
 namespace node {
index 9c14967..d2ced70 100644 (file)
@@ -23,8 +23,6 @@
 #define NODE_SIGNAL_WATCHER_H_
 
 #include <node.h>
-#include <node_events.h>
-
 #include <v8.h>
 #include <ev.h>
 
index f88caef..50e86c8 100644 (file)
@@ -23,7 +23,6 @@
 #define NODE_STAT_WATCHER_H_
 
 #include <node.h>
-#include <node_events.h>
 #include <ev.h>
 
 namespace node {
index f654d2b..2668bb0 100644 (file)
@@ -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>
diff --git a/wscript b/wscript
index 65ee411..e354e78 100644 (file)
--- a/wscript
+++ b/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
   """)