diff --git a/client/clientConnection.cpp b/client/clientConnection.cpp index 139325a4..5ec4b380 100644 --- a/client/clientConnection.cpp +++ b/client/clientConnection.cpp @@ -10,7 +10,7 @@ using namespace std; -ClientConnection::ClientConnection(MessageReceiver* _receiver, const std::string& _ip, size_t _port) : active_(false), connected_(false), messageReceiver(_receiver), reqId(1), ip(_ip), port(_port), readerThread(NULL) +ClientConnection::ClientConnection(MessageReceiver* _receiver, const std::string& _ip, size_t _port) : active_(false), connected_(false), messageReceiver(_receiver), reqId(1), ip(_ip), port(_port), readerThread(NULL), timeouts(0) { } @@ -113,9 +113,10 @@ bool ClientConnection::send(BaseMessage* message) shared_ptr ClientConnection::sendRequest(BaseMessage* message, size_t timeout) { shared_ptr response(NULL); - if (++reqId == 10000) + if (++reqId == 100) reqId = 1; message->id = reqId; +cout << "Req: " << reqId << "\n"; shared_ptr pendingRequest(new PendingRequest(reqId)); { @@ -128,10 +129,18 @@ shared_ptr ClientConnection::sendRequest(BaseMessage* message if (pendingRequest->cv.wait_for(lck,std::chrono::milliseconds(timeout)) == std::cv_status::no_timeout) { response = pendingRequest->response; + timeouts = 0; +cout << "Resp: " << pendingRequest->id << "\n"; } else { - cout << "timeout while waiting for response to: " << reqId << "\n"; + ++timeouts; + cout << "timeout while waiting for response to: " << reqId << ", timeout " << timeouts << "\n"; + if (timeouts > 2*60) + { + std::exception e; + throw e; + } } { std::unique_lock mlock(mutex_); diff --git a/client/clientConnection.h b/client/clientConnection.h index dfbc79f5..8b157d03 100644 --- a/client/clientConnection.h +++ b/client/clientConnection.h @@ -88,6 +88,7 @@ protected: std::string ip; size_t port; std::thread* readerThread; + int timeouts; };