Skip to content

Commit 70de032

Browse files
booobrianc
authored andcommitted
initial fix for issue #136
Test case from ticket works but some tests fail. Signed-off-by: brianc <brian.m.carlson@gmail.com>
1 parent fe10d85 commit 70de032

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

src/binding.cc

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)