diff options
Diffstat (limited to '')
| -rw-r--r-- | src/connection.cpp | 6 | ||||
| -rw-r--r-- | src/connection.h | 9 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/connection.cpp b/src/connection.cpp index a277ea7..5b79dfe 100644 --- a/src/connection.cpp +++ b/src/connection.cpp | |||
| @@ -238,7 +238,7 @@ bool Connection::readInput() | |||
| 238 | return true; | 238 | return true; |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | bool Connection::readInput( int nSec, int nUSec ) | 241 | bool Connection::readInput( int nSec, int nUSec, int *pnSecBack, int *pnUSecBack ) |
| 242 | { | 242 | { |
| 243 | fd_set rfds; | 243 | fd_set rfds; |
| 244 | struct timeval tv; | 244 | struct timeval tv; |
| @@ -252,7 +252,9 @@ bool Connection::readInput( int nSec, int nUSec ) | |||
| 252 | tv.tv_usec = nUSec; | 252 | tv.tv_usec = nUSec; |
| 253 | 253 | ||
| 254 | retval = select( nSocket+1, &rfds, NULL, NULL, &tv ); | 254 | retval = select( nSocket+1, &rfds, NULL, NULL, &tv ); |
| 255 | /* Don't rely on the value of tv now! */ | 255 | |
| 256 | if( pnSecBack ) (*pnSecBack) = tv.tv_sec; | ||
| 257 | if( pnUSecBack ) (*pnUSecBack) = tv.tv_usec; | ||
| 256 | 258 | ||
| 257 | if (retval == -1) | 259 | if (retval == -1) |
| 258 | { | 260 | { |
diff --git a/src/connection.h b/src/connection.h index efb8630..dd4112b 100644 --- a/src/connection.h +++ b/src/connection.h | |||
| @@ -272,11 +272,16 @@ public: | |||
| 272 | * Reads all pending input from the connection, blocking up to nSec | 272 | * Reads all pending input from the connection, blocking up to nSec |
| 273 | * seconds and nUSec micro-seconds for the data. This uses select to | 273 | * seconds and nUSec micro-seconds for the data. This uses select to |
| 274 | * simulate blocking, but has the same effect as standard io blocking. | 274 | * simulate blocking, but has the same effect as standard io blocking. |
| 275 | * If you don't want to block, just set both values to zero. | 275 | * If you don't want to block, just set both values to zero. The back |
| 276 | * parameters are optional, set to null to not use them. The variables | ||
| 277 | * you pass in through the back parameters will contain the remaining | ||
| 278 | * time if data arrived before the max timeout was reached. | ||
| 276 | *@param nSec Max seconds to wait. | 279 | *@param nSec Max seconds to wait. |
| 277 | *@param nUSec Max micro-seconds to wait. | 280 | *@param nUSec Max micro-seconds to wait. |
| 281 | *@param pnSecBack The number of seconds remaining. | ||
| 282 | *@param pnUSecBack The number of micro-seconds remaining. | ||
| 278 | */ | 283 | */ |
| 279 | bool readInput( int nSec, int nUSec ); | 284 | bool readInput( int nSec, int nUSec, int *pnSecBack=NULL, int *pnUSecBack=NULL ); |
| 280 | 285 | ||
| 281 | /** Writes all data that is pending to the socket. | 286 | /** Writes all data that is pending to the socket. |
| 282 | *@returns True if all data was written succesfully, false otherwise. | 287 | *@returns True if all data was written succesfully, false otherwise. |
