Timeout not infinite for client reads after sending

This commit is contained in:
Stefan Persson 2010-10-21 14:52:24 +00:00
parent 48a055a061
commit 8da5bf1ae5
3 changed files with 7 additions and 2 deletions

View file

@ -167,7 +167,7 @@ std::wstring Client::sendToService(const Message &msg) {
s.connect(L"TelldusClient"); s.connect(L"TelldusClient");
s.write(msg.data()); s.write(msg.data());
return s.read(); return s.read(500);
} }
void Client::stopThread(){ void Client::stopThread(){

View file

@ -21,6 +21,7 @@ namespace TelldusCore {
void connect(const std::wstring &server); void connect(const std::wstring &server);
bool isConnected(); bool isConnected();
std::wstring read(); std::wstring read();
std::wstring read(int timeout);
void stopReadWait(); void stopReadWait();
void write(const std::wstring &msg); void write(const std::wstring &msg);

View file

@ -78,6 +78,10 @@ void Socket::stopReadWait(){
} }
std::wstring Socket::read() { std::wstring Socket::read() {
return read(INFINITE);
}
std::wstring Socket::read(int timeout){
wchar_t buf[BUFSIZE]; wchar_t buf[BUFSIZE];
int result; int result;
DWORD cbBytesRead = 0; DWORD cbBytesRead = 0;
@ -91,7 +95,7 @@ std::wstring Socket::read() {
ReadFile( d->hPipe, &buf, sizeof(wchar_t)*BUFSIZE, &cbBytesRead, &oOverlap); ReadFile( d->hPipe, &buf, sizeof(wchar_t)*BUFSIZE, &cbBytesRead, &oOverlap);
result = WaitForSingleObject(oOverlap.hEvent, INFINITE); result = WaitForSingleObject(oOverlap.hEvent, timeout);
if(!d->running){ if(!d->running){
CloseHandle(d->readEvent); CloseHandle(d->readEvent);