TEST(SocketTest, set_nonblocking_mode) { boost::shared_ptr<Socket> sock(Socket::tcp("localhost", "http")); ASSERT_TRUE(sock->set_nonblocking_mode(true)); ASSERT_TRUE(sock->set_nonblocking_mode(false)); boost::shared_ptr<Socket> sock2(Socket::udp()); ASSERT_TRUE(sock2->set_nonblocking_mode(true)); ASSERT_TRUE(sock2->set_nonblocking_mode(false)); }
int main(int argc, char *argv[]) { #ifndef _WIN32 signal(SIGHUP, sighandler); signal(SIGINT, sighandler); signal(SIGPIPE, sigpipe); #endif time_t tstart = time(NULL); { StdoutLog log; { evHandler h(&log); ph = &h; { lSocket sock(h, true); sock.Open(HOST, PORT); h.Add(&sock); { l2Socket sock2(h, true); sock2.Open(HOST, PORT); h.Add(&sock2); { l3Socket sock3(h, true); sock3.Open(HOST, PORT); h.Add(&sock3); h.EventLoop(); h.CloseAll(); // %! one socket refuses to go away while (h.GetCount() > 1) { h.Select(1, 0); } printf("Exiting 1...\n"); fflush(stdout); } printf("Exiting 2...\n"); fflush(stdout); } printf("Exiting 3...\n"); fflush(stdout); } printf("Exiting 4...\n"); fflush(stdout); } printf("Exiting 5...\n"); fflush(stdout); } printf("Exiting 6...\n"); fflush(stdout); time_t tstop = time(NULL); time_t total = tstop - tstart + 1; printf("lc: %d\n", lc); printf("l2c: %d\n", l2c); printf("l3c: %d\n", l3c); printf("lc: %f\n", (double)lc / (double)total); printf("l2c: %f\n", (double)l2c / (double)total); printf("l3c: %f\n", (double)l3c / (double)total); }