Пример #1
0
class Publisher(SignalLogger):
    """Base class for signaling Publisher.

    The base __init__ function setups the signaling object that a Subscriber can connect to.
    """

    def __init__(self):
        """Setups signaling object.
        """
        super().__init__()
        self._signal = Signal()

    def subscribe(self, handle):
        """Subscribe a handle to this publisher.
        """
        self._signal.connect(handle)

    def unsubscribe(self, handle):
        """Unsubscribe a handle from this publisher.
        """
        self._signal.disconnect(handle)

    def emit(self, **kwargs):
        """Emits arguments to the subscribers.
        """
        self._signal.send(sender=self, **kwargs)
Пример #2
0
def suspended_signal( signal, receiver, sender=None, weak=True, dispatch_uid=None ):
    result = Signal.disconnect( signal, receiver, sender=sender, dispatch_uid=dispatch_uid )
    assert result, 'Signal was not disconnected; details: {}'.format(
        (signal, receiver, sender, dispatch_uid))
    try:
        yield result
    finally:
        Signal.connect( signal, receiver, sender=sender, weak=weak, dispatch_uid=dispatch_uid )