Skip to content

Commit 7060171

Browse files
committed
Extract stop() method into AbstractPoolReferenceStore
Signed-off-by: Simon Völcker <simon.voelcker@frequenz.com>
1 parent 39143cb commit 7060171

4 files changed

Lines changed: 12 additions & 21 deletions

File tree

src/frequenz/sdk/timeseries/abstract_pool/_abstract_pool_reference_store.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,3 +124,10 @@ def get_namespace(self) -> str:
124124
@abstractmethod
125125
def create_bounds_tracker(self) -> None:
126126
"""Create the bounds tracker for the pool."""
127+
128+
async def stop(self) -> None:
129+
"""Stop all tasks and channels."""
130+
await self.formula_pool.stop()
131+
if self.bounds_tracker is not None:
132+
await self.bounds_tracker.stop()
133+
self.status_receiver.close()

src/frequenz/sdk/timeseries/battery_pool/_battery_pool_reference_store.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,10 @@ def __init__( # pylint: disable=too-many-arguments
9494
self._batteries = self.component_ids
9595
self._working_batteries: set[ComponentId] = set()
9696
self._update_battery_status_task: asyncio.Task[None] | None = None
97-
self._batteries_status_receiver: Receiver[ComponentPoolStatus] = (
98-
batteries_status_receiver
99-
)
97+
10098
if self._batteries:
10199
self._update_battery_status_task = asyncio.create_task(
102-
self._update_battery_status(self._batteries_status_receiver)
100+
self._update_battery_status(self.status_receiver)
103101
)
104102
self._min_update_interval: timedelta = min_update_interval
105103
self._active_methods: dict[str, MetricAggregator[Any]] = {}
@@ -130,15 +128,15 @@ def create_bounds_tracker(self) -> None:
130128
"""Create the bounds tracker for the pool."""
131129

132130
async def stop(self) -> None:
133-
"""Stop all pending async tasks."""
131+
"""Stop all tasks and channels."""
132+
await super().stop()
133+
134134
tasks_to_stop: list[Awaitable[Any]] = [
135135
method.stop() for method in self._active_methods.values()
136136
]
137-
tasks_to_stop.append(self.formula_pool.stop())
138137
if self._update_battery_status_task:
139138
tasks_to_stop.append(cancel_and_await(self._update_battery_status_task))
140139
await asyncio.gather(*tasks_to_stop)
141-
self._batteries_status_receiver.close()
142140

143141
async def _update_battery_status(
144142
self, receiver: Receiver[ComponentPoolStatus]

src/frequenz/sdk/timeseries/ev_charger_pool/_ev_charger_pool_reference_store.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,3 @@ def create_bounds_tracker(self) -> None:
5555
self.bounds_channel.new_sender(),
5656
)
5757
self.bounds_tracker.start()
58-
59-
async def stop(self) -> None:
60-
"""Stop all tasks and channels owned by the EVChargerPool."""
61-
await self.formula_pool.stop()
62-
if self.bounds_tracker is not None:
63-
await self.bounds_tracker.stop()
64-
self.status_receiver.close()

src/frequenz/sdk/timeseries/pv_pool/_pv_pool_reference_store.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,3 @@ def create_bounds_tracker(self) -> None:
5757
self.bounds_channel.new_sender(),
5858
)
5959
self.bounds_tracker.start()
60-
61-
async def stop(self) -> None:
62-
"""Stop all tasks and channels owned by the PVInverterPool."""
63-
await self.formula_pool.stop()
64-
if self.bounds_tracker is not None:
65-
await self.bounds_tracker.stop()
66-
self.status_receiver.close()

0 commit comments

Comments
 (0)