@@ -242,12 +242,12 @@ void async_tcp_client::service()
242
242
243
243
244
244
// event loop
245
- // fd_set fdss[3];
245
+ fd_set fdss[3 ];
246
246
timeval timeout;
247
247
248
248
for (; !app_exiting_;)
249
249
{
250
- set_descriptors (); // memcpy(&fdss, fdss_, sizeof(fdss_));
250
+ :: memcpy (&fdss, fdss_, sizeof (fdss_));
251
251
252
252
// @pitfall: If still have data to read, only wait 1 millseconds.
253
253
get_wait_duration (timeout, this ->offset_ > 0 ? MAX_BUSY_DELAY : MAX_WAIT_DURATION);
@@ -265,8 +265,6 @@ void async_tcp_client::service()
265
265
if (ec == EBADF || !this ->impl_ .is_open ()) {
266
266
goto _L_error;
267
267
}
268
-
269
- clear_descriptors ();
270
268
continue ; // try select again.
271
269
}
272
270
@@ -309,8 +307,6 @@ void async_tcp_client::service()
309
307
}
310
308
}
311
309
312
- clear_descriptors ();
313
-
314
310
/* if (this->p2p_channel1_.connected_) {
315
311
if (!do_write(&p2p_channel1_))
316
312
p2p_channel1_.reset();
@@ -386,18 +382,6 @@ void async_tcp_client::handle_error(void)
386
382
interrupter_.reset ();
387
383
}
388
384
389
- void async_tcp_client::set_descriptors ()
390
- {
391
- FD_SET (this ->impl_ , &fdss_[read_op]);
392
- FD_SET (this ->interrupter_ .read_descriptor (), &fdss_[read_op]);
393
- }
394
-
395
- void async_tcp_client::clear_descriptors ()
396
- {
397
- FD_CLR (this ->impl_ , &fdss_[read_op]);
398
- FD_CLR (this ->interrupter_ .read_descriptor (), &fdss_[read_op]);
399
- }
400
-
401
385
void async_tcp_client::register_descriptor (const socket_native_type fd, int flags)
402
386
{
403
387
if ((flags & socket_event_read) != 0 )
@@ -415,7 +399,8 @@ void async_tcp_client::register_descriptor(const socket_native_type fd, int flag
415
399
FD_SET (fd, &(fdss_[except_op]));
416
400
}
417
401
418
- maxfdp_ = static_cast <int >(fd) + 1 ;
402
+ if (maxfdp_ < static_cast <int >(fd) + 1 )
403
+ maxfdp_ = static_cast <int >(fd) + 1 ;
419
404
}
420
405
421
406
void async_tcp_client::unregister_descriptor (const socket_native_type fd, int flags)
@@ -493,10 +478,8 @@ bool async_tcp_client::connect(void)
493
478
FD_ZERO (&fdss_[write_op]);
494
479
FD_ZERO (&fdss_[except_op]);
495
480
496
- INET_LOG (" interrupter readfd:%d" , interrupter_.read_descriptor ());
497
-
498
- // register_descriptor(interrupter_.read_descriptor(), socket_event_read);
499
- // register_descriptor(impl_.native_handle(), socket_event_read | socket_event_except);
481
+ register_descriptor (interrupter_.read_descriptor (), socket_event_read);
482
+ register_descriptor (impl_.native_handle (), socket_event_read);
500
483
501
484
impl_.set_nonblocking (true );
502
485
@@ -508,7 +491,7 @@ bool async_tcp_client::connect(void)
508
491
509
492
this ->impl_ .set_optval (SOL_SOCKET, SO_REUSEADDR, 1 ); // set opt for p2p
510
493
511
- INET_LOG (" connect server: %s:%u succeed. " , address_.c_str (), port_);
494
+ INET_LOG (" connect server: %s:%u succeed, fd=%d interrupterfd=%d " , address_.c_str (), port_, impl_. native_handle (), interrupter_. read_descriptor () );
512
495
513
496
#if 0 // provided as API
514
497
auto endp = this->impl_.local_endpoint();
0 commit comments