diff options
author | Mike Buland <eichlan@xagasoft.com> | 2006-06-21 22:50:21 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2006-06-21 22:50:21 +0000 |
commit | 0acdeb045f1bf6caae786c474d99cea68071f31f (patch) | |
tree | 280691a5ecd6d488822f73a90a4f26b5da7fe682 /src | |
parent | 5f029cf734e1c84b7dcde8383bbc85aada08ee1c (diff) | |
download | libbu++-0acdeb045f1bf6caae786c474d99cea68071f31f.tar.gz libbu++-0acdeb045f1bf6caae786c474d99cea68071f31f.tar.bz2 libbu++-0acdeb045f1bf6caae786c474d99cea68071f31f.tar.xz libbu++-0acdeb045f1bf6caae786c474d99cea68071f31f.zip |
Updated the readInput function to tell you how much time is left over after
blocking.
Diffstat (limited to 'src')
-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. |