async def __asubscribe__(self, observer: AsyncObserver) -> AsyncDisposable: log.debug("Merge:__asubscribe__()") sink = Merge.Sink(self, self.max_concurrent) down = await chain(sink, observer) up = await chain(self._source, sink) return AsyncCompositeDisposable(up, down)
async def __asubscribe__(self, observer: AsyncObserver[T2]) -> AsyncDisposable: sink = Map.Sink(self) # type: AsyncSingleStream[T2] down = await chain(sink, observer) up = await chain(self._source, sink) # type: AsyncDisposable return AsyncCompositeDisposable(up, down)
async def __asubscribe__(self, observer: AsyncObserver) -> AsyncDisposable: tasks = [] # type: List[asyncio.Task] sink = Delay.Sink(self, tasks) down = await chain(sink, observer) up = await chain(self._source, sink) async def cancel(): for task in tasks: task.cancel() return AsyncCompositeDisposable(up, down, AsyncDisposable(cancel))
async def worker(self, observer: AsyncObserver) -> None: def recurse(fut) -> None: self._task = asyncio.ensure_future(self.worker(observer)) try: source = next(self._operators) except StopIteration: await observer.aclose() except Exception as ex: await observer.athrow(ex) else: sink = Concat.Stream() down = await chain(sink, observer) # type: AsyncDisposable sink.add_done_callback(recurse) up = await chain(source, sink) self._subscription = AsyncCompositeDisposable(up, down)
async def __asubscribe__(self, observer: AsyncObserver[T]) -> AsyncDisposable: """Start streaming.""" tasks = [] # type: List[asyncio.Task] sink = Debounce.Stream(self, tasks) down = await chain(sink, observer) up = await chain(self._source, sink) def cancel(sub: asyncio.Future): for task in tasks: task.cancel() sink.add_done_callback(cancel) return AsyncCompositeDisposable(up, down)
async def worker(self, observer: AsyncObserver) -> None: def recurse(fut) -> None: if self._stop: log.debug("CatchException._:stop") print("STOP") asyncio.ensure_future(observer.aclose()) else: log.debug("CatchException._:continue to next iterable") print("NO STOP") self._task = asyncio.ensure_future(self.worker(observer)) try: source = next(self._iterable) except StopIteration: await observer.aclose() except Exception as ex: await observer.athrow(ex) else: self._stop = True sink = CatchException.Stream(self) down = await chain(sink, observer) # type: AsyncDisposable up = await chain(source, sink) sink.add_done_callback(recurse) self._subscription = AsyncCompositeDisposable(up, down)
async def __asubscribe__(self, observer: AsyncObserver) -> AsyncDisposable: sink = SkipLast.Sink(self) down = await chain(sink, observer) up = await chain(self._source, sink) return AsyncCompositeDisposable(up, down)
async def __asubscribe__(self, obv: AsyncObserver) -> AsyncDisposable: sink = DistinctUntilChanged.Sink() down = await chain(sink, obv) up = await chain(self.source, sink) return AsyncCompositeDisposable(up, down)