Skip to content

Commit 6913c3f

Browse files
committed
Some android devices socket.select wake up compatible.
1 parent e700101 commit 6913c3f

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

src/async_tcp_client.cpp

+13-13
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ async_tcp_client::async_tcp_client() : app_exiting_(false),
117117
connect_failed_(false),
118118
connect_wait_timeout_(-1)
119119
{
120-
FD_ZERO(&fdss_[read_op]);
121-
FD_ZERO(&fdss_[write_op]);
122-
FD_ZERO(&fdss_[read_op]);
120+
FD_ZERO(&fds_array_[read_op]);
121+
FD_ZERO(&fds_array_[write_op]);
122+
FD_ZERO(&fds_array_[read_op]);
123123

124124
maxfdp_ = 0;
125125
reset();
@@ -242,19 +242,19 @@ void async_tcp_client::service()
242242

243243

244244
// event loop
245-
fd_set fdss[3];
245+
fd_set fds_array[3];
246246
timeval timeout;
247247

248248
for (; !app_exiting_;)
249249
{
250-
::memcpy(&fdss, fdss_, sizeof(fdss_));
250+
::memcpy(&fds_array, fds_array_, sizeof(fds_array_));
251251

252252
// @pitfall: If still have data to read, only wait 1 millseconds.
253253
get_wait_duration(timeout, this->offset_ > 0 ? MAX_BUSY_DELAY : MAX_WAIT_DURATION);
254254

255255
INET_LOG("socket.select maxfdp:%d waiting... %ld milliseconds", maxfdp_, timeout.tv_sec * 1000 + timeout.tv_usec / 1000);
256256

257-
int nfds = ::select(maxfdp_, &(fdss_[read_op]), nullptr, nullptr, &timeout);
257+
int nfds = ::select(maxfdp_, &(fds_array[read_op]), nullptr, nullptr, &timeout);
258258

259259
INET_LOG("socket.select waked up, retval=%d", nfds);
260260

@@ -273,7 +273,7 @@ void async_tcp_client::service()
273273
perform_timeout_timers();
274274
}
275275
// Reset the interrupter.
276-
else if (nfds > 0 && FD_ISSET(this->interrupter_.read_descriptor(), &(fdss_[read_op])))
276+
else if (nfds > 0 && FD_ISSET(this->interrupter_.read_descriptor(), &(fds_array[read_op])))
277277
{
278278
bool was_interrupt = interrupter_.reset();
279279
INET_LOG("socket.select waked up by interrupt, interrupter fd:%d, was_interrupt:%s", this->interrupter_.read_descriptor(), was_interrupt ? "true" : "false");
@@ -386,17 +386,17 @@ void async_tcp_client::register_descriptor(const socket_native_type fd, int flag
386386
{
387387
if ((flags & socket_event_read) != 0)
388388
{
389-
FD_SET(fd, &(fdss_[read_op]));
389+
FD_SET(fd, &(fds_array_[read_op]));
390390
}
391391

392392
if ((flags & socket_event_write) != 0)
393393
{
394-
FD_SET(fd, &(fdss_[write_op]));
394+
FD_SET(fd, &(fds_array_[write_op]));
395395
}
396396

397397
if ((flags & socket_event_except) != 0)
398398
{
399-
FD_SET(fd, &(fdss_[except_op]));
399+
FD_SET(fd, &(fds_array_[except_op]));
400400
}
401401

402402
if(maxfdp_ < static_cast<int>(fd) + 1)
@@ -407,17 +407,17 @@ void async_tcp_client::unregister_descriptor(const socket_native_type fd, int fl
407407
{
408408
if ((flags & socket_event_read) != 0)
409409
{
410-
FD_CLR(fd, &(fdss_[read_op]));
410+
FD_CLR(fd, &(fds_array_[read_op]));
411411
}
412412

413413
if ((flags & socket_event_write) != 0)
414414
{
415-
FD_CLR(fd, &(fdss_[write_op]));
415+
FD_CLR(fd, &(fds_array_[write_op]));
416416
}
417417

418418
if ((flags & socket_event_except) != 0)
419419
{
420-
FD_CLR(fd, &(fdss_[except_op]));
420+
FD_CLR(fd, &(fds_array_[except_op]));
421421
}
422422
}
423423

src/async_tcp_client.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ namespace purelib {
242242
write_op,
243243
except_op,
244244
};
245-
fd_set fdss_[3];
245+
fd_set fds_array_[3];
246246
// fd_set readfds_, writefds_, excepfds_;
247247
connect_listener connect_listener_;
248248
appl_pdu_recv_callback_t on_received_pdu_;

0 commit comments

Comments
 (0)