示例#1
0
文件: subject.py 项目: aguil/RxPython
  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()
示例#2
0
文件: subject.py 项目: aguil/RxPython
  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
示例#3
0
    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
示例#4
0
    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()
示例#5
0
文件: subject.py 项目: aguil/RxPython
  def onNext(self, value):
    with self.gate:
      errorIfDisposed(self)

      if not self.isStopped:
        self.value = value
        self.hasValue = True
示例#6
0
    def onNext(self, value):
        with self.gate:
            errorIfDisposed(self)

            if not self.isStopped:
                self.value = value
                self.hasValue = True
示例#7
0
    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)
示例#8
0
    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()
示例#9
0
文件: subject.py 项目: aguil/RxPython
  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)
示例#10
0
文件: subject.py 项目: aguil/RxPython
  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()
示例#11
0
    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)
示例#12
0
文件: subject.py 项目: aguil/RxPython
  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)
示例#13
0
    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()
示例#14
0
文件: subject.py 项目: aguil/RxPython
  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()
示例#15
0
    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()
示例#16
0
文件: subject.py 项目: aguil/RxPython
  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()
示例#17
0
    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()
示例#18
0
文件: subject.py 项目: aguil/RxPython
  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()
示例#19
0
    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()
示例#20
0
文件: subject.py 项目: aguil/RxPython
  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()