Nice to see loop tuning continue to get better. One design question: your timeout check accompanies time.sleep calls. Why not have:
* An attribute flag that says "I consider myself timed out" (even if it hasn't happened yet but is bound to happen because of impending sleep)
* A _checkTimeLeft(seconds=0) method that you call in various places to set the timeout flag if the requisite number of seconds isn't available
* A self.sleep method that checks for remaining time and time.sleeps only if the sleep ends before the deadline, so you don't have to check this for every time.sleep
* Instead of time checks, a check for the timeout flag.
On a more nitpicky note, _is_timed_out is not the right spelling for a method; that'd be _isTimedOut. And I don't see the point of a leading underscore in _msg_counter.
Hi Stuart,
Nice to see loop tuning continue to get better. One design question: your timeout check accompanies time.sleep calls. Why not have:
* An attribute flag that says "I consider myself timed out" (even if it hasn't happened yet but is bound to happen because of impending sleep)
* A _checkTimeLeft( seconds= 0) method that you call in various places to set the timeout flag if the requisite number of seconds isn't available
* A self.sleep method that checks for remaining time and time.sleeps only if the sleep ends before the deadline, so you don't have to check this for every time.sleep
* Instead of time checks, a check for the timeout flag.
On a more nitpicky note, _is_timed_out is not the right spelling for a method; that'd be _isTimedOut. And I don't see the point of a leading underscore in _msg_counter.
Jeroen