コード例 #1
0
ファイル: controlledsubject.py プロジェクト: jesonjn/RxPY
    def _process_request(self, number_of_items):
        if self.enable_queue:
            #console.log('queue length', self.queue.length)

            while len(self.queue) >= number_of_items and number_of_items > 0:
                # console.log('number of items', number_of_items)
                self.subject.on_next(self.queue.shift())
                number_of_items -= 1

            if len(self.queue):
                return {
                    "number_of_items": number_of_items,
                    "return_value": True
                }
            else:
                return {
                    "number_of_items": number_of_items,
                    "return_value": False
                }

        if self.has_failed:
            self.subject.on_error(self.error)
            self.controlled_disposable.dispose()
            self.controlled_disposable = Disposable.empty()
        elif self.has_completed:
            self.subject.on_completed()
            self.controlled_disposable.dispose()
            self.controlled_disposable = Disposable.empty()

        return {"number_of_items": number_of_items, "return_value": False}
コード例 #2
0
ファイル: snippet.py プロジェクト: szabo92/gistable
 def __init__(self, conn):
     super(HttpParser, self).__init__()
     self.conn = conn
     self.buf = StringIO()
     self.requests_in = Subject()
     self.responses_out = HttpWriter(conn)
     self.keep_alive_timeout_dispose = Disposable.empty()
     self.read_timeout_dispose = Disposable.empty()
     self.keep_alive_timer_on()
コード例 #3
0
ファイル: test_disposable.py プロジェクト: AlexMost/RxPY
def test_groupdisposable_contains():
    d1 = Disposable.empty()
    d2 = Disposable.empty()

    g = CompositeDisposable(d1, d2)
    
    assert g.length == 2
    assert g.contains(d1)
    assert g.contains(d2)
コード例 #4
0
def test_groupdisposable_contains():
    d1 = Disposable.empty()
    d2 = Disposable.empty()

    g = CompositeDisposable(d1, d2)

    assert g.length == 2
    assert g.contains(d1)
    assert g.contains(d2)
コード例 #5
0
ファイル: controlledsubject.py プロジェクト: jesonjn/RxPY
    def __init__(self, enable_queue=True):
        super(ControlledSubject, self).__init__(self._subscribe)

        self.subject = Subject()
        self.enable_queue = enable_queue
        self.queue = [] if enable_queue else None
        self.requested_count = 0
        self.requested_disposable = Disposable.empty()
        self.error = None
        self.has_failed = False
        self.has_completed = False
        self.controlled_disposable = Disposable.empty()
コード例 #6
0
ファイル: controlledsubject.py プロジェクト: jesonjn/RxPY
    def __init__(self, enable_queue=True):
        super(ControlledSubject, self).__init__(self._subscribe)

        self.subject = Subject()
        self.enable_queue = enable_queue
        self.queue = [] if enable_queue else None
        self.requested_count = 0
        self.requested_disposable = Disposable.empty()
        self.error = None
        self.has_failed = False
        self.has_completed = False
        self.controlled_disposable = Disposable.empty()
コード例 #7
0
ファイル: subject.py プロジェクト: mvschaik/RxPY
    def __subscribe(self, observer):
        self.check_disposed()
        if not self.is_stopped:
            self.observers.append(observer)
            return InnerSubscription(self, observer)

        if self.exception:
            observer.on_error(self.exception)
            return Disposable.empty()

        observer.on_completed()

        return Disposable.empty()
コード例 #8
0
    def _subscribe(self, observer):
        with self.lock:
            self.check_disposed()
            if not self.is_stopped:
                self.observers.append(observer)
                return InnerSubscription(self, observer)

            if self.exception:
                observer.on_error(self.exception)
                return Disposable.empty()

            observer.on_completed()
            return Disposable.empty()
コード例 #9
0
ファイル: catchscheduler.py プロジェクト: mvschaik/RxPY
 def wrapped_action(self, state):
     try:
         return action(parent._get_recursive_wrapper(self), state)
     except Exception as ex:
         if not parent._handler(ex):
             raise Exception(ex)
         return Disposable.empty()
コード例 #10
0
 def wrapped_action(self, state):
     try:
         return action(parent._get_recursive_wrapper(self), state)
     except Exception as ex:
         if not parent._handler(ex):
             raise Exception(ex)
         return Disposable.empty()
コード例 #11
0
ファイル: scheduler.py プロジェクト: AlexMost/RxPY
            def schedule_work(_, state3):
                action(state3, inner_action)
                if is_added:
                    group.remove(d)
                else:
                    is_done[0] = True

                return Disposable.empty()
コード例 #12
0
ファイル: scheduler.py プロジェクト: phaufe/RxPY
                def action2(scheduler1, state3):
                    if is_added:
                        group.remove(d)
                    else:
                        is_done[0] = True

                    recursive_action(state3)
                    return Disposable.empty()
コード例 #13
0
                def action(scheduler, state=None):
                    if is_added:
                        group.remove(d)
                    else:
                        is_done[0] = True

                    recursive_action(state)
                    return Disposable.empty()
コード例 #14
0
            def schedule_work(_, state3):
                action(state3, inner_action)
                if is_added:
                    group.remove(d)
                else:
                    is_done[0] = True

                return Disposable.empty()
コード例 #15
0
                def action2(scheduler1, state3):
                    nonlocal is_done

                    if is_added:
                        group.remove(d)
                    else:
                        is_done = True

                    recursive_action(state3)
                    return Disposable.empty()
コード例 #16
0
ファイル: anonymousobservable.py プロジェクト: mvschaik/RxPY
            def fix_subscriber(subscriber):
                """Fix subscriber to check for None or function returned to 
                decorate as Disposable"""
            
                if subscriber is None:
                    subscriber = Disposable.empty()
                elif type(subscriber) == types.FunctionType:
                    subscriber = Disposable(subscriber)

                return subscriber
コード例 #17
0
                def action(scheduler, state=None):
                    nonlocal is_done

                    #print "action", scheduler1, state3
                    if is_added:
                        group.remove(d)
                    else:
                        is_done = True

                    recursive_action(state)
                    return Disposable.empty()
コード例 #18
0
ファイル: scheduler.py プロジェクト: Reactive-Extensions/RxPy
                def action(scheduler, state=None):
                    nonlocal is_done

                    #print "action", scheduler1, state3
                    if is_added:
                        group.remove(d)
                    else:
                        is_done = True
                    
                    recursive_action(state)
                    return Disposable.empty()
コード例 #19
0
ファイル: using.py プロジェクト: mvschaik/RxPY
 def subscribe(observer):
     disposable = Disposable.empty()
     try:
         resource = resource_factory()
         if resource:
             disposable = resource
         
         source = observable_factory(resource)
     except Exception as exception:
         d = Observable.throw_exception(exception).subscribe(observer)
         return CompositeDisposable(d, disposable)
     
     return CompositeDisposable(source.subscribe(observer), disposable)
コード例 #20
0
        def subscribe(observer):
            disposable = Disposable.empty()
            try:
                resource = resource_factory()
                if resource:
                    disposable = resource

                source = observable_factory(resource)
            except Exception as exception:
                d = Observable.throw_exception(exception).subscribe(observer)
                return CompositeDisposable(d, disposable)

            return CompositeDisposable(source.subscribe(observer), disposable)
コード例 #21
0
ファイル: pausable.py プロジェクト: jesonjn/RxPY
    def subscribe(self, observer):
        conn = self.source.publish()
        subscription = conn.subscribe(observer)
        connection = [Disposable.empty()]

        def on_next(b):
            if b:
                connection[0] = conn.connect()
            else:
                connection[0].dispose()
                connection[0] = Disposable.empty()

        pausable = self.subject.distinct_until_changed().subscribe(on_next)
        return CompositeDisposable(subscription, connection[0], pausable)
コード例 #22
0
 def __subscribe(self, observer):
     self.check_disposed()
     if not self.is_stopped:
         self.observers.append(observer)
         observer.on_next(self.value)
         return InnerSubscription(self, observer)
     
     ex = self.exception
     if ex:
         observer.on_error(ex)
     else:
         observer.on_completed()
     
     return Disposable.empty()
コード例 #23
0
    def __subscribe(self, observer):
        self.check_disposed()
        if not self.is_stopped:
            self.observers.append(observer)
            observer.on_next(self.value)
            return InnerSubscription(self, observer)

        ex = self.exception
        if ex:
            observer.on_error(ex)
        else:
            observer.on_completed()

        return Disposable.empty()
コード例 #24
0
ファイル: pausable.py プロジェクト: jesonjn/RxPY
    def subscribe(self, observer):
        conn = self.source.publish()
        subscription = conn.subscribe(observer)
        connection = [Disposable.empty()]

        def on_next(b):
            if b:
                connection[0] = conn.connect()
            else:
                connection[0].dispose()
                connection[0] = Disposable.empty()

        pausable = self.subject.distinct_until_changed().subscribe(on_next)
        return CompositeDisposable(subscription, connection[0], pausable)
コード例 #25
0
ファイル: controlledsubject.py プロジェクト: jesonjn/RxPY
    def _process_request(self, number_of_items):
        if self.enable_queue:
            #console.log('queue length', self.queue.length)

            while len(self.queue) >= number_of_items and number_of_items > 0:
                # console.log('number of items', number_of_items)
                self.subject.on_next(self.queue.shift())
                number_of_items -= 1

            if len(self.queue):
                return { "number_of_items": number_of_items, "return_value": True }
            else:
                return { "number_of_items": number_of_items, "return_value": False }

        if self.has_failed:
            self.subject.on_error(self.error)
            self.controlled_disposable.dispose()
            self.controlled_disposable = Disposable.empty()
        elif self.has_completed:
            self.subject.on_completed()
            self.controlled_disposable.dispose()
            self.controlled_disposable = Disposable.empty()

        return { "number_of_items": number_of_items, "return_value": False }
コード例 #26
0
ファイル: controlledsubject.py プロジェクト: jesonjn/RxPY
    def request(self, number):
        check_disposed(self)
        self.dispose_current_request()

        r = self._process_request(number)
        number = r["number_of_items"]
        if not r["return_value"]:
            self.requested_count = number

            def action():
                self.requested_count = 0
            self.requested_disposable = Disposable(action)

            return self.requested_disposable
        else:
            return Disposable.empty()
コード例 #27
0
ファイル: controlledsubject.py プロジェクト: jesonjn/RxPY
    def request(self, number):
        check_disposed(self)
        self.dispose_current_request()

        r = self._process_request(number)
        number = r["number_of_items"]
        if not r["return_value"]:
            self.requested_count = number

            def action():
                self.requested_count = 0

            self.requested_disposable = Disposable(action)

            return self.requested_disposable
        else:
            return Disposable.empty()
コード例 #28
0
ファイル: asyncsubject.py プロジェクト: AlexMost/RxPY
    def _subscribe(self, observer):
        with self.lock:
            self.check_disposed()
            if not self.is_stopped:
                self.observers.append(observer)
                return InnerSubscription(self, observer)

            ex = self.exception
            hv = self.has_value
            v = self.value

        if ex:
            observer.on_error(ex)
        elif hv:
            observer.on_next(v)
            observer.on_completed()
        else:
            observer.on_completed()

        return Disposable.empty()
コード例 #29
0
    def _subscribe(self, observer):
        with self.lock:
            self.check_disposed()
            if not self.is_stopped:
                self.observers.append(observer)
                return InnerSubscription(self, observer)

            ex = self.exception
            hv = self.has_value
            v = self.value

        if ex:
            observer.on_error(ex)
        elif hv:
            observer.on_next(v)
            observer.on_completed()
        else:
            observer.on_completed()

        return Disposable.empty()
コード例 #30
0
 def action(scheduler, state):
     notification.accept(observer)
     return Disposable.empty()
コード例 #31
0
ファイル: pausable.py プロジェクト: jesonjn/RxPY
 def on_next(b):
     if b:
         connection[0] = conn.connect()
     else:
         connection[0].dispose()
         connection[0] = Disposable.empty()
コード例 #32
0
 def subscribe1(o):
     o.on_next(1)
     return Disposable.empty()
コード例 #33
0
 def subscribe3(o):
     o.on_completed()
     return Disposable.empty()
コード例 #34
0
 def inner_action(scheduler, y):
     yy[0] = y
     return Disposable.empty()
コード例 #35
0
ファイル: test_create.py プロジェクト: mvschaik/RxPY
 def subscribe3(o):
     o.on_completed()
     return Disposable.empty()
コード例 #36
0
ファイル: test_create.py プロジェクト: michaelandersen/RxPY
 def subscribe(o):
     o.on_completed()
     o.on_next(100)
     o.on_error("ex")
     o.on_completed()
     return Disposable.empty()
コード例 #37
0
 def subscribe(observer):
     return Disposable.empty()
コード例 #38
0
def test_emptydisposable():
    d = Disposable.empty()
    assert d
    d.dispose()
コード例 #39
0
 def action_dispose(scheduler, state):
     """Called at dispose time. Defaults to 1000"""
     subscription[0].dispose()
     return Disposable.empty()
コード例 #40
0
 def action_create(scheduler, state):
     """Called at create time. Defaults to 100"""
     source[0] = create()
     return Disposable.empty()
コード例 #41
0
 def action_subscribe(scheduler, state):
     """Called at subscribe time. Defaults to 200"""
     subscription[0] = source[0].subscribe(observer)
     return Disposable.empty()
コード例 #42
0
 def invoke_action(self, action, state=None):
     action(self, state)
     return Disposable.empty()
コード例 #43
0
 def inner_action(scheduler, y):
     nonlocal yy
     yy = y
     return Disposable.empty()
コード例 #44
0
ファイル: test_create.py プロジェクト: mvschaik/RxPY
 def subscribe1(o):
     o.on_next(1)
     return Disposable.empty()
コード例 #45
0
 def inner_action(scheduler, state):
     nonlocal yy
     yy = state
     return Disposable.empty()
コード例 #46
0
 def action(scheduler, state=None):
      nonlocal xx
      xx = state
      return Disposable.empty()
コード例 #47
0
ファイル: test_create.py プロジェクト: mvschaik/RxPY
 def subscribe(o):
     o.on_error(ex)
     o.on_next(100)
     o.on_error('foo')
     o.on_completed()
     return Disposable.empty()
コード例 #48
0
 def inner_action(scheduler, y):
     nonlocal yy
     yy = y
     return Disposable.empty()
コード例 #49
0
ファイル: test_create.py プロジェクト: mvschaik/RxPY
 def subscribe2(o):
     o.on_error('exception')
     return Disposable.empty()
コード例 #50
0
ファイル: scheduler.py プロジェクト: AlexMost/RxPY
 def invoke_action(self, action, state=None):
     action(self, state)
     return Disposable.empty()
コード例 #51
0
 def action(scheduler, state=None):
      xx[0] = state
      return Disposable.empty()
コード例 #52
0
 def action(scheduler, state=None):
     nonlocal xx
     xx = state
     return Disposable.empty()
コード例 #53
0
 def inner_action(scheduler, state=None):
     yy[0] = state
     return Disposable.empty()
コード例 #54
0
 def inner_action(scheduler, state):
     nonlocal yy
     yy = state
     return Disposable.empty()
コード例 #55
0
 def subscribe2(o):
     o.on_error('exception')
     return Disposable.empty()
コード例 #56
0
 def action(scheduler, state):
     for observer in observable.observers:
         notification.accept(observer)            
     return Disposable.empty()
コード例 #57
0
ファイル: never.py プロジェクト: phaufe/RxPY
 def subscribe(_):
     return Disposable.empty()
コード例 #58
0
ファイル: controlledsubject.py プロジェクト: jesonjn/RxPY
 def dispose_current_request(self):
     self.requested_disposable.dispose()
     self.requested_disposable = Disposable.empty()