Remove eio_warmup. Use ev_ref instead.
authorRyan <ry@tinyclouds.org>
Mon, 22 Jun 2009 17:32:42 +0000 (19:32 +0200)
committerRyan <ry@tinyclouds.org>
Mon, 22 Jun 2009 17:32:42 +0000 (19:32 +0200)
src/file.cc
src/net.cc
src/node.cc
src/node.h

index fc8af09..a8f7d4c 100644 (file)
@@ -34,8 +34,7 @@ using namespace node;
     Local<Function> l = Local<Function>::Cast(last_arg);              \
     callback = new Persistent<Function>();                            \
     *callback = Persistent<Function>::New(l);                         \
-  }                                                                   \
-  node::eio_warmup();                                                 \
+  }
 
 #define CALL_CALLBACK_PTR(req, argc, argv)                            \
 do {                                                                  \
index dc57992..07c8f74 100644 (file)
@@ -222,12 +222,10 @@ Connection::Connect (const Arguments& args)
   Connection::Resolve(req);
 #else
   /* For the moment I will do DNS lookups in the eio thread pool. This is
-   * sub-optimal and cannot handle massive numbers of requests but it is 
-   * quite portable. 
+   * sub-optimal and cannot handle massive numbers of requests. 
    * In the future I will move to a system using adns or udns: 
    * http://lists.schmorp.de/pipermail/libev/2009q1/000632.html
    */
-  eio_warmup();
   connection->Attach();
   eio_custom( Connection::Resolve
             , EIO_PRI_DEFAULT
index 6036e15..5b0c2ab 100644 (file)
@@ -227,13 +227,6 @@ static void
 node_eio_cb (EV_P_ ev_async *w, int revents)
 {
   int r = eio_poll();
-  /* returns 0 if all requests were handled, -1 if not, or the value of EIO_FINISH if != 0 */
-
-  // XXX is this check too heavy? 
-  //  it require three locks in eio
-  //  what's the better way?
-  if (eio_nreqs () == 0 && eio_nready() == 0 && eio_npending() == 0) 
-    ev_async_stop(EV_DEFAULT_UC_ w);
 }
 
 static void
@@ -242,12 +235,6 @@ eio_want_poll (void)
   ev_async_send(EV_DEFAULT_UC_ &eio_watcher); 
 }
 
-void
-node::eio_warmup (void)
-{
-  ev_async_start(EV_DEFAULT_UC_ &eio_watcher);
-}
-
 enum encoding
 node::ParseEncoding (Handle<Value> encoding_v)
 {
@@ -349,6 +336,8 @@ main (int argc, char *argv[])
   // start eio thread pool
   ev_async_init(&eio_watcher, node_eio_cb);
   eio_init(eio_want_poll, NULL);
+  ev_async_start(EV_DEFAULT_UC_ &eio_watcher);
+  ev_unref(EV_DEFAULT_UC);
 
   V8::SetFlagsFromCommandLine(&argc, argv, true);
   V8::Initialize();
index af376ad..5311b47 100644 (file)
@@ -29,7 +29,6 @@ do {                                                                      \
 enum encoding {ASCII, UTF8, RAW};
 enum encoding ParseEncoding (v8::Handle<v8::Value> encoding_v);
 void FatalException (v8::TryCatch &try_catch); 
-void eio_warmup (void); // call this before creating a new eio event.
 
 class ObjectWrap {
 public: