2023-04-15 16:17:31 +02:00
|
|
|
from typing import Callable
|
|
|
|
|
|
|
|
from cpl_core.type import T
|
|
|
|
|
|
|
|
|
|
|
|
class Observer:
|
|
|
|
def __init__(self, on_next: Callable, on_error: Callable = None, on_complete: Callable = None):
|
|
|
|
self._on_next = on_next
|
2023-04-15 18:59:24 +02:00
|
|
|
self._on_error = on_error
|
|
|
|
self._on_complete = on_complete
|
|
|
|
|
|
|
|
self._closed = False
|
|
|
|
|
|
|
|
@property
|
|
|
|
def closed(self) -> bool:
|
|
|
|
return self._closed
|
2023-04-15 16:17:31 +02:00
|
|
|
|
|
|
|
def next(self, value: T):
|
|
|
|
self._on_next(value)
|
|
|
|
|
|
|
|
def error(self, ex: Exception):
|
|
|
|
if self._on_error is None:
|
|
|
|
return
|
|
|
|
self._on_error(ex)
|
|
|
|
|
|
|
|
def complete(self):
|
|
|
|
if self._on_complete is None:
|
|
|
|
return
|
|
|
|
|
|
|
|
self._on_complete()
|