From 57dfbfeb2b94f947595bad077cd92cf8cb64b064 Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Thu, 4 Sep 2008 21:39:18 +0200 Subject: [PATCH] Add methods to switch off signals handling in JCLComponent darcs-hash:20080904193918-86b55-2aac67792d9aa49ec5746ba594acf1cf61096212.gz --- src/jcl/jabber/component.py | 21 +++++++++++++++++---- src/jcl/jabber/tests/feeder.py | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/jcl/jabber/component.py b/src/jcl/jabber/component.py index 77c9854..8db175d 100644 --- a/src/jcl/jabber/component.py +++ b/src/jcl/jabber/component.py @@ -655,8 +655,8 @@ class JCLComponent(Component, object): self._restart = False self.last_activity = int(time.time()) - signal.signal(signal.SIGINT, self.signal_handler) - signal.signal(signal.SIGTERM, self.signal_handler) + self.signals_enabled = False + self.enable_signals() def run(self): """ @@ -688,8 +688,7 @@ class JCLComponent(Component, object): self.__logger.info("Connection failed, restarting.") return (True, 5) finally: - signal.signal(signal.SIGINT, signal.default_int_handler) - signal.signal(signal.SIGTERM, signal.default_int_handler) + self.disable_signals() if not self.running: self._restart = False wait_before_restart = 0 @@ -706,6 +705,20 @@ class JCLComponent(Component, object): self.__logger.debug("Exitting normally") return (self._restart, wait_before_restart) + def enable_signals(self): + """Enable signals""" + if not self.signals_enabled: + self.signals_enabled = True + signal.signal(signal.SIGINT, signal.default_int_handler) + signal.signal(signal.SIGTERM, signal.default_int_handler) + + def disable_signals(self): + """Enable signals""" + if self.signals_enabled: + self.signals_enabled = False + signal.signal(signal.SIGINT, signal.default_int_handler) + signal.signal(signal.SIGTERM, signal.default_int_handler) + def _get_restart(self): return self._restart diff --git a/src/jcl/jabber/tests/feeder.py b/src/jcl/jabber/tests/feeder.py index 16b8e11..71e07a5 100644 --- a/src/jcl/jabber/tests/feeder.py +++ b/src/jcl/jabber/tests/feeder.py @@ -68,6 +68,7 @@ class FeederComponent_TestCase(JCLComponent_TestCase): self.comp.handle_tick = end_run self.comp.stream = MockStream() self.comp.stream_class = MockStream + self.comp.disable_signals() run_thread = threading.Thread(target=self.comp.run, name="run_thread") run_thread.start()