Source code for sodiumfrp.listener

from typing import Callable

[docs]class Listener: """ A handle for a listener that was registered with :meth:`Cell.listen() <sodiumfrp.primitives.Cell.listen>` or :meth:`Stream.listen() <sodiumfrp.primitives.Stream.listen>`. """ def __init__(self, unlisten: Callable[["Listener"], None]) -> None: self._unlisten = unlisten
[docs] def unlisten(self) -> None: """ Deregister the listener that was registered so it will no longer be called back, allowing associated resources to be garbage collected. """ self._unlisten(self)
[docs] def append(self, two: "Listener") -> "Listener": """ Combine listeners into one so that invoking :meth:`unlisten` on the returned listener will unlisten both the inputs. """ one = self def unlisten(_: "Listener") -> None: one.unlisten() two.unlisten() return Listener(unlisten)