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