diff --git a/cyclonedds/builtin.py b/cyclonedds/builtin.py index b207ebb5..cc3040ee 100644 --- a/cyclonedds/builtin.py +++ b/cyclonedds/builtin.py @@ -157,7 +157,7 @@ def __init__(self, ), listener=listener ) - self._next_condition = ReadCondition(self, ViewState.Any | SampleState.NotRead | InstanceState.Any) + self._next_condition_states = ViewState.Any | SampleState.NotRead | InstanceState.Any if cqos: _CQos.cqos_destroy(cqos) self._make_constructors() diff --git a/cyclonedds/sub.py b/cyclonedds/sub.py index ca4ad891..c6cddb9a 100644 --- a/cyclonedds/sub.py +++ b/cyclonedds/sub.py @@ -140,8 +140,8 @@ def __init__( _CQos.cqos_destroy(cqos) self._topic = topic self._topic_ref = topic._ref - self._next_condition = None - self._keepalive_entities = [self.subscriber, topic] + self._next_condition_states = ViewState.Any | SampleState.NotRead | InstanceState.Alive + self._keepalive_entities = [self.subscriber] @property def topic(self) -> Topic[_T]: @@ -227,9 +227,7 @@ def read_next(self) -> Optional[_T]: DDSException If any error code is returned by the DDS API it is converted into an exception. """ - self._next_condition = self._next_condition or \ - ReadCondition(self, ViewState.Any | SampleState.NotRead | InstanceState.Alive) - samples = self.read(condition=self._next_condition) + samples = self.read(condition=ReadCondition(self, self._next_condition_states)) if samples: return samples[0] return None @@ -242,9 +240,7 @@ def take_next(self) -> Optional[_T]: DDSException If any error code is returned by the DDS API it is converted into an exception. """ - self._next_condition = self._next_condition or \ - ReadCondition(self, ViewState.Any | SampleState.NotRead | InstanceState.Alive) - samples = self.take(condition=self._next_condition) + samples = self.take(condition=ReadCondition(self, self._next_condition_states)) if samples: return samples[0] return None