diff options
Diffstat (limited to 'src/socket.cpp')
-rw-r--r-- | src/socket.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/socket.cpp b/src/socket.cpp index e567061..221d4c2 100644 --- a/src/socket.cpp +++ b/src/socket.cpp | |||
@@ -174,9 +174,26 @@ size_t Bu::Socket::read( void *pBuf, size_t nBytes ) | |||
174 | return nRead; | 174 | return nRead; |
175 | } | 175 | } |
176 | 176 | ||
177 | //size_t Bu::Socket::read( void *pBuf, size_t nBytes, uint32_t nTimeout ) | 177 | size_t Bu::Socket::read( void *pBuf, size_t nBytes, |
178 | //{ | 178 | uint32_t nSec, uint32_t nUSec ) |
179 | //} | 179 | { |
180 | fd_set rfds; | ||
181 | FD_ZERO(&rfds); | ||
182 | FD_SET(nSocket, &rfds); | ||
183 | struct timeval tv = { nSec, nUSec }; | ||
184 | int retval = select( nSocket+1, &rfds, NULL, NULL, &tv ); | ||
185 | if( retval == -1 ) | ||
186 | throw ConnectionException( | ||
187 | excodeBadReadError, | ||
188 | "Bad Read error" | ||
189 | ); | ||
190 | if( !FD_ISSET( nSocket, &rfds ) ) | ||
191 | throw ConnectionException( | ||
192 | excodeSocketTimeout, | ||
193 | "Socket timout on read" | ||
194 | ); | ||
195 | return read( pBuf, nBytes ); | ||
196 | } | ||
180 | 197 | ||
181 | size_t Bu::Socket::write( const void *pBuf, size_t nBytes ) | 198 | size_t Bu::Socket::write( const void *pBuf, size_t nBytes ) |
182 | { | 199 | { |