From d02f4c9701cdc37d759e3d86532d729630455d8b Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sun, 31 Aug 2003 22:28:16 +0000 Subject: [PATCH] net_xfer debug messages svn path=/trunk/boinc/; revision=2214 --- client/client_state.C | 8 +++++++- client/net_xfer.C | 19 +++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/client/client_state.C b/client/client_state.C index 03d8190847..138d14b4b9 100644 --- a/client/client_state.C +++ b/client/client_state.C @@ -602,9 +602,15 @@ void CLIENT_STATE::check_suspend_activities(int& reason) { // sleep up to x seconds, // but if network I/O becomes possible, // wake up and do as much as limits allow. -// If suspended, just sleep x seconds +// If suspended, just sleep x seconds. +// This gets called from the Win GUI to allow high network throughput. +// NOTE: when a socket is connecting, this gets called repeatedly, +// because the NetActivity messages seems to get sent repeatedly. +// This is inefficient but not a problem (I guess) // int CLIENT_STATE::net_sleep(double x) { + ScopeMessages scope_messages(log_messages, ClientMessages::DEBUG_NET_XFER); + scope_messages.printf("CLIENT_STATE::net_sleep(%f)\n", x); if (activities_suspended) { boinc_sleep(x); return 0; diff --git a/client/net_xfer.C b/client/net_xfer.C index 4e8a947c8c..f14b963f41 100644 --- a/client/net_xfer.C +++ b/client/net_xfer.C @@ -322,7 +322,7 @@ int NET_XFER_SET::net_sleep(double x) { // Transfer at most one block per socket. // int NET_XFER_SET::do_select(double& bytes_transferred, timeval& timeout) { - int n, fd, retval; + int n, fd, retval, nsocks_queried; socklen_t i; NET_XFER *nxp; socklen_t intsize = sizeof(int); @@ -350,29 +350,37 @@ int NET_XFER_SET::do_select(double& bytes_transferred, timeval& timeout) { FD_ZERO(&write_fds); FD_ZERO(&error_fds); - // do a select on all active streams + // do a select on all active (non-throttled) sockets // + nsocks_queried = 0; for (i=0; iis_connected) { FD_SET(nxp->socket, &write_fds); + nsocks_queried++; } else if (nxp->want_download) { if (bytes_left_down > 0) { FD_SET(nxp->socket, &read_fds); + nsocks_queried++; } else { scope_messages.printf("NET_XFER_SET::do_select(): Throttling download\n"); } } else if (nxp->want_upload) { if (bytes_left_up > 0) { FD_SET(nxp->socket, &write_fds); + nsocks_queried++; } else { scope_messages.printf("NET_XFER_SET::do_select(): Throttling upload\n"); } } FD_SET(nxp->socket, &error_fds); } + if (nsocks_queried==0) return 0; n = select(FD_SETSIZE, &read_fds, &write_fds, &error_fds, &timeout); - scope_messages.printf("NET_XFER_SET::do_select(): select returned %d\n", n); + scope_messages.printf( + "NET_XFER_SET::do_select(): queried %d, returned %d\n", + nsocks_queried, n + ); if (n == 0) return 0; if (n < 0) return ERR_SELECT; @@ -393,7 +401,10 @@ int NET_XFER_SET::do_select(double& bytes_transferred, timeval& timeout) { getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&n, &intsize); #endif if (n) { - scope_messages.printf("NET_XFER_SET::do_select(): socket %d connect failed\n", fd); + scope_messages.printf( + "NET_XFER_SET::do_select(): socket %d connection to %s failed\n", + nxp->hostname, fd + ); nxp->error = ERR_CONNECT; nxp->io_done = true; } else {