From d6288f61a9bceaf6c208e4d357ff46ecba50c0d2 Mon Sep 17 00:00:00 2001 From: Tom Early Date: Wed, 3 Apr 2019 17:08:38 -0700 Subject: [PATCH] reintroduced select to read --- TCPReaderWriterClient.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/TCPReaderWriterClient.cpp b/TCPReaderWriterClient.cpp index abdec15..cd0df18 100644 --- a/TCPReaderWriterClient.cpp +++ b/TCPReaderWriterClient.cpp @@ -119,6 +119,22 @@ int CTCPReaderWriterClient::read(unsigned char* buffer, unsigned int length) assert(length > 0U); assert(m_fd != -1); + // Check that the recv() won't block + fd_set readFds; + FD_ZERO(&readFds); + FD_SET(m_fd, &readFds); + + // Return after timeout + //timeval tv; + //tv.tv_sec = secs; + //tv.tv_usec = msecs * 1000; + + int ret = select(m_fd + 1, &readFds, NULL, NULL, NULL); // wait until it's ready + if (ret < 0) { + fprintf(stderr, "Error returned from TCP client select, err=%d\n", errno); + return -1; + } + ssize_t len = recv(m_fd, buffer, length, 0); if (-1 == len) { fprintf(stderr, "Error returned from recv, err=%d\n", errno);