def __scan_range(self, observer: Observer, scan_range: range) -> None:

        with self._context.lock:
            try:
                for unit in scan_range:

                    if unit in self.__found_units:
                        continue

                    device: Optional[ModbusDevice] = self.__scan_unit(unit)

                    if device is not None:

                        self.__found_units.add(unit)

                        # TODO
                        # device.on_close().subscribe(
                        #     lambda _: self.__found_units.remove(device.unit)
                        # )

                        observer.on_next(device)

            except SerialException:
                pass

            except Exception as e:
                observer.on_error(e)
Beispiel #2
0
def test_create_on_next_throw_close2():
    ex = 'ex'
    next = [True]
    error = [False]
    completed = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True

    def on_error(e):
        assert ex == e
        error[0] = True

    def on_completed():
        completed[0] = True

    res = Observer(on_next, on_error, on_completed)

    res.on_next(42)

    assert next[0]
    assert not error[0]
    assert not completed[0]

    res.on_error(ex)

    assert not completed[0]
    assert error[0]
Beispiel #3
0
def test_create_on_next_close_has_error():
    e_ = None
    ex = 'ex'
    next = [False]
    completed = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True

    def on_completed():
        completed[0] = True

    res = Observer(on_next, None, on_completed)

    res.on_next(42)
    assert next[0]
    assert not completed[0]
    try:
        res.on_error(ex)
        assert False
    except Exception as e:
        e_ = e.args[0]

    assert ex == e_
    assert not completed[0]
 def rx_loop(observer: Observer, scheduler: typing.Scheduler):
     print("Looping urls")
     loop = asyncio.get_event_loop()
     try:
         loop.run_until_complete(async_sender(urls, observer))
     except Exception as e:
         observer.on_error(e)
     finally:
         loop.close()
         observer.on_completed()
Beispiel #5
0
    def _subscribe_core(self,
                        observer: Observer,
                        scheduler: Scheduler = None) -> Disposable:
        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()
Beispiel #6
0
def test_create_on_next_has_error():
    ex = 'ex'
    next = [False]
    _e = None

    def on_next(x):
        assert 42 == x
        next[0] = True

    res = Observer(on_next)

    res.on_next(42)
    assert next[0]

    try:
        res.on_error(ex)
        assert False
    except Exception as e:
        e_ = e.args[0]

    assert ex == e_
Beispiel #7
0
def test_create_on_next_on_error():
    ex = 'ex'
    next = [True]
    error = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True

    def on_error(e):
        assert ex == e
        error[0] = True

    res = Observer(on_next, on_error)

    res.on_next(42)

    assert next[0]
    assert not error[0]

    res.on_error(ex)
    assert error[0]