@@ -80,7 +80,7 @@ class Connection : public ObjectWrap {
8080
8181 // static function called by libev as callback entrypoint
8282 static void
83- io_event (EV_P_ ev_io *w , int revents)
83+ io_event (uv_poll_t * w, int status , int revents)
8484 {
8585 TRACE (" Received IO event" );
8686 Connection *connection = static_cast <Connection*>(w->data );
@@ -193,8 +193,6 @@ class Connection : public ObjectWrap {
193193 THROW (" Values must be an array" );
194194 }
195195
196- Handle<Value> params = args[1 ];
197-
198196 Local<Array> jsParams = Local<Array>::Cast (args[1 ]);
199197 int len = jsParams->Length ();
200198
@@ -234,8 +232,9 @@ class Connection : public ObjectWrap {
234232 return Undefined ();
235233 }
236234
237- ev_io read_watcher_;
238- ev_io write_watcher_;
235+ uv_poll_t read_watcher_;
236+ uv_poll_t write_watcher_;
237+
239238 PGconn *connection_;
240239 bool connecting_;
241240 Connection () : ObjectWrap ()
@@ -244,9 +243,9 @@ class Connection : public ObjectWrap {
244243 connecting_ = false ;
245244
246245 TRACE (" Initializing ev watchers" );
247- ev_init (&read_watcher_, io_event);
246+ // ev_init(&read_watcher_, io_event);
248247 read_watcher_.data = this ;
249- ev_init (&write_watcher_, io_event);
248+ // ev_init(&write_watcher_, io_event);
250249 write_watcher_.data = this ;
251250 }
252251
@@ -309,7 +308,7 @@ class Connection : public ObjectWrap {
309308 {
310309 if (PQflush (connection_) == 1 ) {
311310 TRACE (" Flushing" );
312- ev_io_start (EV_DEFAULT_ &write_watcher_);
311+ // ev_io_start(EV_DEFAULT_ &write_watcher_);
313312 }
314313 }
315314
@@ -354,9 +353,13 @@ class Connection : public ObjectWrap {
354353
355354 PQsetNoticeProcessor (connection_, NoticeReceiver, this );
356355
356+ uv_poll_init (uv_default_loop (), &read_watcher_, fd);
357+ uv_poll_init (uv_default_loop (), &write_watcher_, fd);
358+
357359 TRACE (" Setting watchers to socket" );
358- ev_io_set (&read_watcher_, fd, EV_READ);
359- ev_io_set (&write_watcher_, fd, EV_WRITE);
360+ // uv_poll_start(uv_poll_t* handle, int events, uv_poll_cb cb)
361+ // ev_io_set(&read_watcher_, fd, EV_READ);
362+ // ev_io_set(&write_watcher_, fd, EV_WRITE);
360363
361364 connecting_ = true ;
362365 StartWrite ();
@@ -453,7 +456,7 @@ class Connection : public ObjectWrap {
453456 HandleErrorResult (result);
454457 break ;
455458 case PGRES_COMMAND_OK:
456- case PGRES_EMPTY_QUERY:
459+ case PGRES_EMPTY_QUERY:
457460 EmitCommandMetaData (result);
458461 break ;
459462 default :
@@ -620,25 +623,29 @@ class Connection : public ObjectWrap {
620623 void StopWrite ()
621624 {
622625 TRACE (" Stoping write watcher" );
623- ev_io_stop (EV_DEFAULT_ &write_watcher_);
626+ // ev_io_stop(EV_DEFAULT_ &write_watcher_);
627+ uv_poll_stop (&write_watcher_);
624628 }
625629
626630 void StartWrite ()
627631 {
628632 TRACE (" Starting write watcher" );
629- ev_io_start (EV_DEFAULT_ &write_watcher_);
633+ uv_poll_start (&write_watcher_, UV_WRITABLE, io_event);
634+ // ev_io_start(EV_DEFAULT_ &write_watcher_);
630635 }
631636
632637 void StopRead ()
633638 {
634639 TRACE (" Stoping read watcher" );
635- ev_io_stop (EV_DEFAULT_ &read_watcher_);
640+ // ev_io_stop(EV_DEFAULT_ &read_watcher_);
641+ uv_poll_stop (&read_watcher_);
636642 }
637643
638644 void StartRead ()
639645 {
640646 TRACE (" Starting read watcher" );
641- ev_io_start (EV_DEFAULT_ &read_watcher_);
647+ // ev_io_start(EV_DEFAULT_ &read_watcher_);
648+ uv_poll_start (&read_watcher_, UV_READABLE, io_event);
642649 }
643650 // Converts a v8 array to an array of cstrings
644651 // the result char** array must be free() when it is no longer needed
0 commit comments