Stop timer thread when stopping component

darcs-hash:20061130215532-86b55-c3093785c0b17528f6c667c4e877122583d2589e.gz
This commit is contained in:
David Rousselie
2006-11-30 22:55:32 +01:00
parent 0c94b77fdb
commit 04fee565a7
2 changed files with 7 additions and 3 deletions

View File

@@ -61,9 +61,9 @@ if __name__ == '__main__':
jcl_suite = unittest.TestSuite() jcl_suite = unittest.TestSuite()
# jcl_suite.addTest(FeederComponent_TestCase('test_handle_tick')) # jcl_suite.addTest(FeederComponent_TestCase('test_handle_tick'))
# jcl_suite.addTest(FeederComponent_TestCase('test_handle_get_register_new')) # jcl_suite.addTest(JCLComponent_TestCase('test_handle_set_register_new_field_mandatory'))
# jcl_suite = unittest.TestSuite((feeder_component_suite)) # jcl_suite = unittest.TestSuite((feeder_component_suite))
# jcl_suite = unittest.TestSuite((dataform_suite)) # jcl_suite = unittest.TestSuite((component_suite))
jcl_suite = unittest.TestSuite((component_suite, \ jcl_suite = unittest.TestSuite((component_suite, \
feeder_component_suite, \ feeder_component_suite, \
feeder_suite, \ feeder_suite, \

View File

@@ -98,6 +98,7 @@ class JCLComponent(Component, object):
self.__logger = logging.getLogger("jcl.jabber.JCLComponent") self.__logger = logging.getLogger("jcl.jabber.JCLComponent")
self.lang = Lang() self.lang = Lang()
self.running = False self.running = False
self.wait_event = threading.Event()
signal.signal(signal.SIGINT, self.signal_handler) signal.signal(signal.SIGINT, self.signal_handler)
signal.signal(signal.SIGTERM, self.signal_handler) signal.signal(signal.SIGTERM, self.signal_handler)
@@ -162,6 +163,7 @@ class JCLComponent(Component, object):
to_jid = _account.user_jid, \ to_jid = _account.user_jid, \
stanza_type = "unavailable")) stanza_type = "unavailable"))
self.db_disconnect() self.db_disconnect()
self.wait_event.set()
timer_thread.join(JCLComponent.timeout) timer_thread.join(JCLComponent.timeout)
self.disconnect() self.disconnect()
self.__logger.debug("Exitting normally") self.__logger.debug("Exitting normally")
@@ -194,10 +196,12 @@ class JCLComponent(Component, object):
and self.stream.socket is not None): and self.stream.socket is not None):
self.handle_tick() self.handle_tick()
self.__logger.debug("Resetting alarm signal") self.__logger.debug("Resetting alarm signal")
time.sleep(self.time_unit) ##time.sleep(self.time_unit)
self.wait_event.wait(self.time_unit)
except Exception, exception: except Exception, exception:
self.queue.put(exception) self.queue.put(exception)
raise raise
self.__logger.info("Timer thread terminated...")
def authenticated(self): def authenticated(self):
"""Override authenticated Component event handler """Override authenticated Component event handler