From 159cdc40d0cbe2526b4b87b0729b68811d2e20e3 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Sat, 23 Mar 2013 22:32:51 +0000 Subject: [PATCH] - attempt to see if this helps network performance --- source/glest_game/network/client_interface.cpp | 16 ++++++++-------- source/glest_game/network/client_interface.h | 2 +- .../shared_lib/include/platform/posix/socket.h | 4 ++-- .../shared_lib/sources/platform/posix/socket.cpp | 8 ++++---- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/source/glest_game/network/client_interface.cpp b/source/glest_game/network/client_interface.cpp index b8059983..6ce5d050 100644 --- a/source/glest_game/network/client_interface.cpp +++ b/source/glest_game/network/client_interface.cpp @@ -898,7 +898,7 @@ void ClientInterface::updateFrame(int *checkFrame) { Chrono chrono; chrono.start(); - int waitMilliseconds = (checkFrame == NULL ? 1 : 0); + int waitMicroseconds = (checkFrame == NULL ? 100 : 0); int simulateLag = Config::getInstance().getInt("SimulateClientLag","0"); bool done= false; while(done == false && this->quitThread == false) { @@ -906,7 +906,7 @@ void ClientInterface::updateFrame(int *checkFrame) { //printf("BEFORE Client get networkMessageType\n"); //wait for the next message - NetworkMessageType networkMessageType = waitForMessage(waitMilliseconds); + NetworkMessageType networkMessageType = waitForMessage(waitMicroseconds); //printf("AFTER Client got networkMessageType = %d\n",networkMessageType); @@ -1233,13 +1233,13 @@ bool ClientInterface::getNetworkCommand(int frameCount, int currentCachedPending //cachedPendingCommands.erase(frameCount); cachedPendingCommands[frameCount].clear(); } - safeMutex.ReleaseLock(); + safeMutex.ReleaseLock(true); result = true; break; } else { - safeMutex.ReleaseLock(); + safeMutex.ReleaseLock(true); // No data for this frame //if(cachedPendingCommandsIndex > currentCachedPendingCommandsIndex) { // break; @@ -1721,7 +1721,7 @@ string ClientInterface::getNetworkStatus() { return szBuf; } -NetworkMessageType ClientInterface::waitForMessage(int waitMilliseconds) +NetworkMessageType ClientInterface::waitForMessage(int waitMicroseconds) { // Debug! /* @@ -1744,7 +1744,7 @@ NetworkMessageType ClientInterface::waitForMessage(int waitMilliseconds) NetworkMessageType msg = nmtInvalid; //uint64 waitLoopCount = 0; while(msg == nmtInvalid && this->quitThread == false) { - msg = getNextMessageType(waitMilliseconds); + msg = getNextMessageType(waitMicroseconds); if(msg == nmtInvalid) { if(chrono.getMillis() % 250 == 0 && isConnected() == false) { if(quit == false) { @@ -1781,8 +1781,8 @@ NetworkMessageType ClientInterface::waitForMessage(int waitMilliseconds) close(); return msg; } - // Sleep ever second we wait to let other threads work - else if(chrono.getMillis() % 25 == 0) { + // Sleep every x milli-seconds we wait to let other threads work + else if(chrono.getMillis() % 50 == 0) { sleep(5); } diff --git a/source/glest_game/network/client_interface.h b/source/glest_game/network/client_interface.h index 1ee976f8..b1c69a98 100644 --- a/source/glest_game/network/client_interface.h +++ b/source/glest_game/network/client_interface.h @@ -178,7 +178,7 @@ public: protected: Mutex * getServerSynchAccessor() { return NULL; } - NetworkMessageType waitForMessage(int waitMilliseconds=0); + NetworkMessageType waitForMessage(int waitMicroseconds=0); bool shouldDiscardNetworkMessage(NetworkMessageType networkMessageType); void updateFrame(int *checkFrame); diff --git a/source/shared_lib/include/platform/posix/socket.h b/source/shared_lib/include/platform/posix/socket.h index 4bb530ff..bc2f6b66 100644 --- a/source/shared_lib/include/platform/posix/socket.h +++ b/source/shared_lib/include/platform/posix/socket.h @@ -152,8 +152,8 @@ public: static bool hasDataToRead(PLATFORM_SOCKET socket); bool hasDataToRead(); - static bool hasDataToReadWithWait(PLATFORM_SOCKET socket,int waitMilliseconds); - bool hasDataToReadWithWait(int waitMilliseconds); + static bool hasDataToReadWithWait(PLATFORM_SOCKET socket,int waitMicroseconds); + bool hasDataToReadWithWait(int waitMicroseconds); virtual void disconnectSocket(); diff --git a/source/shared_lib/sources/platform/posix/socket.cpp b/source/shared_lib/sources/platform/posix/socket.cpp index 05dd87e8..22ebe94c 100644 --- a/source/shared_lib/sources/platform/posix/socket.cpp +++ b/source/shared_lib/sources/platform/posix/socket.cpp @@ -1077,12 +1077,12 @@ bool Socket::hasDataToRead(PLATFORM_SOCKET socket) return bResult; } -bool Socket::hasDataToReadWithWait(int waitMilliseconds) { +bool Socket::hasDataToReadWithWait(int waitMicroseconds) { MutexSafeWrapper safeMutex(dataSynchAccessorRead,CODE_AT_LINE); - return Socket::hasDataToReadWithWait(sock,waitMilliseconds) ; + return Socket::hasDataToReadWithWait(sock,waitMicroseconds) ; } -bool Socket::hasDataToReadWithWait(PLATFORM_SOCKET socket,int waitMilliseconds) { +bool Socket::hasDataToReadWithWait(PLATFORM_SOCKET socket,int waitMicroseconds) { bool bResult = false; Chrono chono; @@ -1098,7 +1098,7 @@ bool Socket::hasDataToReadWithWait(PLATFORM_SOCKET socket,int waitMilliseconds) /* Wait up to 0 seconds. */ tv.tv_sec = 0; - tv.tv_usec = 1000 * waitMilliseconds; + tv.tv_usec = waitMicroseconds; int retval = 0; {