Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dax/jcl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Rousselie <dax@happycoders.org>2008-09-04 23:39:18 +0400
committerDavid Rousselie <dax@happycoders.org>2008-09-04 23:39:18 +0400
commit57dfbfeb2b94f947595bad077cd92cf8cb64b064 (patch)
tree4141caf3189793a33040be65b114d26e93c924f2 /src
parentb4b2f86a9d056fc2c689c7ab3e972919477c2e96 (diff)
Add methods to switch off signals handling in JCLComponent
darcs-hash:20080904193918-86b55-2aac67792d9aa49ec5746ba594acf1cf61096212.gz
Diffstat (limited to 'src')
-rw-r--r--src/jcl/jabber/component.py21
-rw-r--r--src/jcl/jabber/tests/feeder.py1
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()