1111
1212from celine .sdk .broker import QoS , ReceivedMessage , SubscribeResult
1313
14- from celine .dt .contracts .events import DTEvent , EventSource
15- from celine .dt .contracts .subscription import EventContext , EventHandler , RouteDef , SubscriptionSpec
16- from celine .dt .core .broker .service import BrokerService
17- from celine .dt .core .domain .registry import DomainRegistry
18- from celine .dt .core .values .service import ValuesService
14+ from celine .dt .contracts import DTEvent , EventSource , EventContext , EventHandler , RouteDef , SubscriptionSpec , Infrastructure
1915
2016logger = logging .getLogger (__name__ )
2117
@@ -156,23 +152,23 @@ class SubscriptionManager:
156152 def __init__ (
157153 self ,
158154 * ,
159- broker_service : BrokerService ,
160- values_service : ValuesService ,
161- domain_registry : DomainRegistry | None = None ,
155+ infra : Infrastructure ,
162156 domains : list [Any ] | None = None ,
163157 handler_specs : list [SubscriptionSpec ] | None = None ,
164158 default_qos : QoS = QoS .AT_LEAST_ONCE ,
165159 default_broker_name : str | None = None ,
166160 ) -> None :
167- self ._broker_service = broker_service
168- self ._values_service = values_service
169- self ._domain_registry = domain_registry
161+ self ._infra = infra
170162 self ._domains = domains or []
171163 self ._handler_specs = handler_specs or []
172164 self ._default_qos = default_qos
173165 self ._default_broker_name = default_broker_name
174166 self ._active : list [ActiveSubscription ] = []
175167
168+ @property
169+ def infra (self ) -> Infrastructure :
170+ return self ._infra
171+
176172 async def start (self ) -> None :
177173 # Domain instances
178174 for domain in self ._domains :
@@ -208,7 +204,7 @@ async def _register_specs(
208204 broker_name = broker_name or "<default>" ,
209205 )
210206
211- res : SubscribeResult = await self ._broker_service .subscribe (
207+ res : SubscribeResult = await self .infra . broker .subscribe (
212208 topics = topics ,
213209 handler = handler ,
214210 broker_name = broker_name ,
@@ -240,7 +236,7 @@ async def _register_specs(
240236 async def stop (self ) -> None :
241237 for sub in list (self ._active ):
242238 try :
243- await self ._broker_service .unsubscribe (
239+ await self .infra . broker .unsubscribe (
244240 subscription_id = sub .subscription_id ,
245241 broker_name = sub .broker_name ,
246242 )
@@ -257,22 +253,20 @@ def _wrap_handler(
257253 spec : SubscriptionSpec ,
258254 broker_name : str ,
259255 ) -> Callable [[ReceivedMessage ], Awaitable [None ]]:
260- broker_service = self ._broker_service
261- values_service = self ._values_service
262- domain_registry = self ._domain_registry
256+ broker_service = self .infra . broker
257+ values_service = self .infra . values_service
258+ domain_registry = self .infra . domain_registry
263259
264260 async def _handler (msg : ReceivedMessage ) -> None :
265261 try :
266262 event = _dt_event_from_received (
267263 source_name = source_name , spec = spec , msg = msg
268264 )
269265 ctx = EventContext (
266+ infra = self .infra ,
270267 topic = msg .topic ,
271268 broker_name = broker_name ,
272269 received_at = msg .timestamp or datetime .now (timezone .utc ),
273- broker = broker_service ,
274- values = values_service ,
275- registry = domain_registry ,
276270 entity_id = spec .metadata .get ("entity_id" ),
277271 message_id = msg .message_id ,
278272 raw_payload = msg .raw_payload ,
0 commit comments