def subscribeCore(self, observer): ex = None v = None hv = False with self.gate: errorIfDisposed(self) if not self.isStopped: self.observers.append(observer) return Subject.Subscription(self, observer) ex = self.exception hv = self.hasValue v = self.value if ex != None: observer.onError(ex) elif hv: observer.onNext(v) observer.onCompleted() else: observer.onCompleted() return Disposable.empty()
def subscribeCore(self, observer): so = ScheduledObserver(self.scheduler, observer) n = 0 subscription = self.Subscription(self, so) with self.gate: errorIfDisposed(self) self._trim(self.scheduler.now()) self.observers.append(so) n = len(self.q) for item in self.q: so.onNext(item.value) if self.exception != None: n += 1 so.onError(self.exception) elif self.isStopped: n += 1 so.onCompleted() so.ensureActive(n) return subscription
def onNext(self, value): with self.gate: errorIfDisposed(self) if not self.isStopped: self.value = value self.hasValue = True
def onNext(self, value): os = [] with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) self.value = value for observer in os: observer.onNext(value)
def onCompleted(self): os = [] with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) self.isStopped = True self.observers = [] for observer in os: observer.onCompleted()
def onError(self, exception): os = [] with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) self.isStopped = True self.observers = [] self.exception = exception for observer in os: observer.onError(exception)
def onNext(self, value): os = [] with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) now = self.scheduler.now() self.q.append(Struct(interval=now, value=value)) for observer in os: observer.onNext(value) for observer in os: observer.ensureActive()
def onNext(self, value): os = [] with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) now = self.scheduler.now() self.q.append(Struct(interval = now, value = value)) for observer in os: observer.onNext(value) for observer in os: observer.ensureActive()
def onCompleted(self): os = [] with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) now = self.scheduler.now() self.isStopped = True self.observers = [] self._trim(now) for observer in os: observer.onCompleted() for observer in os: observer.ensureActive()
def onError(self, exception): os = [] with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) now = self.scheduler.now() self.isStopped = True self.observers = [] self.exception = exception self._trim(now) for observer in os: observer.onError(exception) for observer in os: observer.ensureActive()
def onCompleted(self): os = [] v = None hv = False with self.gate: errorIfDisposed(self) if not self.isStopped: os = list(self.observers) self.isStopped = True self.observers = [] v = self.value hv = self.hasValue if hv: for observer in os: observer.onNext(v) observer.onCompleted() else: for observer in os: observer.onCompleted()