@@ -234,18 +234,17 @@ class Connection : public ObjectWrap {
234
234
235
235
uv_poll_t read_watcher_;
236
236
uv_poll_t write_watcher_;
237
-
238
237
PGconn *connection_;
239
238
bool connecting_;
239
+ bool ioInitialized_;
240
240
Connection () : ObjectWrap ()
241
241
{
242
242
connection_ = NULL ;
243
243
connecting_ = false ;
244
+ ioInitialized_ = false ;
244
245
245
246
TRACE (" Initializing ev watchers" );
246
- // ev_init(&read_watcher_, io_event);
247
247
read_watcher_.data = this ;
248
- // ev_init(&write_watcher_, io_event);
249
248
write_watcher_.data = this ;
250
249
}
251
250
@@ -308,7 +307,7 @@ class Connection : public ObjectWrap {
308
307
{
309
308
if (PQflush (connection_) == 1 ) {
310
309
TRACE (" Flushing" );
311
- // ev_io_start(EV_DEFAULT_ &write_watcher_);
310
+ uv_poll_start ( &write_watcher_, UV_WRITABLE, io_event );
312
311
}
313
312
}
314
313
@@ -331,15 +330,14 @@ class Connection : public ObjectWrap {
331
330
LOG (" Connection couldn't be created" );
332
331
}
333
332
334
- if (PQsetnonblocking (connection_, 1 ) == -1 ) {
335
- LOG (" Unable to set connection to non-blocking" );
336
- return false ;
337
- }
338
-
339
333
ConnStatusType status = PQstatus (connection_);
340
334
341
335
if (CONNECTION_BAD == status) {
342
- LOG (" Bad connection status" );
336
+ return false ;
337
+ }
338
+
339
+ if (PQsetnonblocking (connection_, 1 ) == -1 ) {
340
+ LOG (" Unable to set connection to non-blocking" );
343
341
return false ;
344
342
}
345
343
@@ -353,13 +351,11 @@ class Connection : public ObjectWrap {
353
351
354
352
PQsetNoticeProcessor (connection_, NoticeReceiver, this );
355
353
354
+ TRACE (" Setting watchers to socket" );
356
355
uv_poll_init (uv_default_loop (), &read_watcher_, fd);
357
356
uv_poll_init (uv_default_loop (), &write_watcher_, fd);
358
357
359
- TRACE (" Setting watchers to socket" );
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);
358
+ ioInitialized_ = true ;
363
359
364
360
connecting_ = true ;
365
361
StartWrite ();
@@ -399,7 +395,7 @@ class Connection : public ObjectWrap {
399
395
TRACE (" revents & EV_READ" );
400
396
if (PQconsumeInput (connection_) == 0 ) {
401
397
End ();
402
- EmitLastError ();
398
+ EmitLastError ();
403
399
LOG (" Something happened, consume input is 0" );
404
400
return ;
405
401
}
@@ -623,28 +619,28 @@ class Connection : public ObjectWrap {
623
619
void StopWrite ()
624
620
{
625
621
TRACE (" Stoping write watcher" );
626
- // ev_io_stop(EV_DEFAULT_ &write_watcher_);
627
- uv_poll_stop (&write_watcher_);
622
+ if (ioInitialized_) {
623
+ uv_poll_stop (&write_watcher_);
624
+ }
628
625
}
629
626
630
627
void StartWrite ()
631
628
{
632
629
TRACE (" Starting write watcher" );
633
630
uv_poll_start (&write_watcher_, UV_WRITABLE, io_event);
634
- // ev_io_start(EV_DEFAULT_ &write_watcher_);
635
631
}
636
632
637
633
void StopRead ()
638
634
{
639
635
TRACE (" Stoping read watcher" );
640
- // ev_io_stop(EV_DEFAULT_ &read_watcher_);
641
- uv_poll_stop (&read_watcher_);
636
+ if (ioInitialized_) {
637
+ uv_poll_stop (&read_watcher_);
638
+ }
642
639
}
643
640
644
641
void StartRead ()
645
642
{
646
643
TRACE (" Starting read watcher" );
647
- // ev_io_start(EV_DEFAULT_ &read_watcher_);
648
644
uv_poll_start (&read_watcher_, UV_READABLE, io_event);
649
645
}
650
646
// Converts a v8 array to an array of cstrings
0 commit comments