Revision 92b61ec7
b/lib/utils.py | ||
---|---|---|
2578 | 2578 |
@ivar called: tracks whether any of the signals have been raised |
2579 | 2579 |
|
2580 | 2580 |
""" |
2581 |
def __init__(self, signum): |
|
2581 |
def __init__(self, signum, handler_fn=None):
|
|
2582 | 2582 |
"""Constructs a new SignalHandler instance. |
2583 | 2583 |
|
2584 | 2584 |
@type signum: int or list of ints |
2585 | 2585 |
@param signum: Single signal number or set of signal numbers |
2586 |
@type handler_fn: callable |
|
2587 |
@param handler_fn: Signal handling function |
|
2586 | 2588 |
|
2587 | 2589 |
""" |
2590 |
assert handler_fn is None or callable(handler_fn) |
|
2591 |
|
|
2588 | 2592 |
self.signum = set(signum) |
2589 | 2593 |
self.called = False |
2590 | 2594 |
|
2595 |
self._handler_fn = handler_fn |
|
2596 |
|
|
2591 | 2597 |
self._previous = {} |
2592 | 2598 |
try: |
2593 | 2599 |
for signum in self.signum: |
... | ... | |
2628 | 2634 |
""" |
2629 | 2635 |
self.called = False |
2630 | 2636 |
|
2631 |
# we don't care about arguments, but we leave them named for the future |
|
2632 |
def _HandleSignal(self, signum, frame): # pylint: disable-msg=W0613 |
|
2637 |
def _HandleSignal(self, signum, frame): |
|
2633 | 2638 |
"""Actual signal handling function. |
2634 | 2639 |
|
2635 | 2640 |
""" |
... | ... | |
2637 | 2642 |
# solution in Python -- there are no atomic types. |
2638 | 2643 |
self.called = True |
2639 | 2644 |
|
2645 |
if self._handler_fn: |
|
2646 |
self._handler_fn(signum, frame) |
|
2647 |
|
|
2640 | 2648 |
|
2641 | 2649 |
class FieldSet(object): |
2642 | 2650 |
"""A simple field set. |
Also available in: Unified diff