Skip to content

Commit ee5b6c6

Browse files
committed
Add DataSourcingActor
Signed-off-by: Sahas Subramanian <[email protected]>
1 parent fe073fd commit ee5b6c6

File tree

6 files changed

+623
-0
lines changed

6 files changed

+623
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
The DataSourcingActor.
3+
4+
Copyright
5+
Copyright © 2021 Frequenz Energy-as-a-Service GmbH
6+
7+
License
8+
MIT
9+
"""
10+
11+
from .data_sourcing import DataSourcingActor
12+
13+
__all__ = [
14+
"DataSourcingActor",
15+
]
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"""The DataSourcing Actor.
2+
3+
Copyright
4+
Copyright © 2022 Frequenz Energy-as-a-Service GmbH
5+
6+
License
7+
MIT
8+
"""
9+
10+
from frequenz.channels import Receiver
11+
12+
from frequenz.sdk.actor import actor
13+
from frequenz.sdk.actor.channel_registry import ChannelRegistry
14+
from frequenz.sdk.data_pipeline import ComponentMetricRequest
15+
16+
from .microgrid_api_source import MicrogridApiSource
17+
18+
19+
@actor
20+
class DataSourcingActor:
21+
"""An actor that provides data streams of metrics as time series."""
22+
23+
def __init__(
24+
self,
25+
request_receiver: Receiver[ComponentMetricRequest],
26+
registry: ChannelRegistry,
27+
) -> None:
28+
"""Create a `DataSourcingActor` instance.
29+
30+
Args:
31+
request_receiver: A channel receiver to accept metric requests from.
32+
registry: A channel registry. To be replaced by a singleton
33+
instance.
34+
"""
35+
self._request_receiver = request_receiver
36+
self._microgrid_api_source = MicrogridApiSource(registry)
37+
38+
async def run(self) -> None:
39+
"""Run the actor."""
40+
async for request in self._request_receiver:
41+
await self._microgrid_api_source.add_metric(request)

0 commit comments

Comments
 (0)