It doesn't belong on each socket server object as timers are global. Force implementations to call the Timer system directly instead, avoiding any middle men.tags/v1.9.90
@@ -144,13 +144,6 @@ namespace network { | |||
// This is only necessary if the Socket has been put in non-blocking | |||
// mode and needs this callback to flush the buffer. | |||
virtual void processSocketWriteEvent(network::Socket* sock) = 0; | |||
// checkTimeouts() allows the server to check socket timeouts, etc. The | |||
// return value is the number of milliseconds to wait before | |||
// checkTimeouts() should be called again. If this number is zero then | |||
// there is no timeout and checkTimeouts() should be called the next time | |||
// an event occurs. | |||
virtual int checkTimeouts() = 0; | |||
}; | |||
} |
@@ -224,16 +224,6 @@ void VNCServerST::processSocketWriteEvent(network::Socket* sock) | |||
throw rdr::Exception("invalid Socket in VNCServerST"); | |||
} | |||
int VNCServerST::checkTimeouts() | |||
{ | |||
int timeout = 0; | |||
soonestTimeout(&timeout, Timer::checkTimeouts()); | |||
return timeout; | |||
} | |||
// VNCServer methods | |||
void VNCServerST::blockUpdates() |
@@ -76,12 +76,6 @@ namespace rfb { | |||
// Flush pending data from the Socket on to the network. | |||
virtual void processSocketWriteEvent(network::Socket* sock); | |||
// checkTimeouts | |||
// Returns the number of milliseconds left until the next idle timeout | |||
// expires. If any have already expired, the corresponding connections | |||
// are closed. Zero is returned if there is no idle timeout. | |||
virtual int checkTimeouts(); | |||
// Methods overridden from VNCServer | |||
@@ -322,7 +322,7 @@ int main(int argc, char** argv) | |||
} | |||
} | |||
soonestTimeout(&wait_ms, server.checkTimeouts()); | |||
soonestTimeout(&wait_ms, Timer::checkTimeouts()); | |||
tv.tv_sec = wait_ms / 1000; | |||
tv.tv_usec = (wait_ms % 1000) * 1000; | |||
@@ -357,7 +357,7 @@ int main(int argc, char** argv) | |||
} | |||
} | |||
server.checkTimeouts(); | |||
Timer::checkTimeouts(); | |||
// Client list could have been changed. | |||
server.getSockets(&sockets); |
@@ -368,7 +368,7 @@ void XserverDesktop::blockHandler(int* timeout) | |||
} | |||
// Trigger timers and check when the next will expire | |||
int nextTimeout = server->checkTimeouts(); | |||
int nextTimeout = Timer::checkTimeouts(); | |||
if (nextTimeout > 0 && (*timeout == -1 || nextTimeout < *timeout)) | |||
*timeout = nextTimeout; | |||
} catch (rdr::Exception& e) { |
@@ -21,6 +21,7 @@ | |||
#include <winsock2.h> | |||
#include <list> | |||
#include <rfb/LogWriter.h> | |||
#include <rfb/Timer.h> | |||
#include <rfb_win32/SocketManager.h> | |||
using namespace rfb; | |||
@@ -161,7 +162,7 @@ int SocketManager::checkTimeouts() { | |||
std::map<HANDLE,ListenInfo>::iterator i; | |||
for (i=listeners.begin(); i!=listeners.end(); i++) | |||
soonestTimeout(&timeout, i->second.server->checkTimeouts()); | |||
soonestTimeout(&timeout, Timer::checkTimeouts()); | |||
std::list<network::Socket*> shutdownSocks; | |||
std::map<HANDLE,ConnInfo>::iterator j, j_next; |