@@ -28,6 +28,7 @@ class UserCancelled(Exception):
28
28
EnsembleStarted ,
29
29
EnsembleSucceeded ,
30
30
Event ,
31
+ EventForBrm ,
31
32
FMEvent ,
32
33
ForwardModelStepChecksum ,
33
34
RealizationEvent ,
@@ -60,7 +61,7 @@ def __init__(
60
61
self ,
61
62
ensemble : Ensemble ,
62
63
config : EvaluatorServerConfig ,
63
- send_to_brm : Callable [[Event ], None ],
64
+ event_handler : Callable [[EventForBrm ], None ] = lambda _ : _ ,
64
65
) -> None :
65
66
self ._config : EvaluatorServerConfig = config
66
67
self ._ensemble : Ensemble = ensemble
@@ -83,19 +84,19 @@ def __init__(
83
84
self ._dispatchers_empty : asyncio .Event = asyncio .Event ()
84
85
self ._dispatchers_empty .set ()
85
86
current_snapshot_dict = self ._ensemble .snapshot .to_dict ()
86
- self ._send_to_brm = send_to_brm
87
- event : Event = EESnapshot (
87
+ self ._handle_event = event_handler
88
+ event = EESnapshot (
88
89
snapshot = current_snapshot_dict ,
89
90
ensemble = self .ensemble .id_ ,
90
91
)
91
- self ._send_to_brm (event )
92
+ self ._handle_event (event )
92
93
self ._monitoring_result : asyncio .Future [bool ] = asyncio .Future ()
93
94
94
95
async def _append_message (self , snapshot_update_event : EnsembleSnapshot ) -> None :
95
96
event = EESnapshotUpdate (
96
97
snapshot = snapshot_update_event .to_dict (), ensemble = self ._ensemble .id_
97
98
)
98
- self ._send_to_brm (event )
99
+ self ._handle_event (event )
99
100
if event .snapshot .get (ids .STATUS ) in {
100
101
ENSEMBLE_STATE_STOPPED ,
101
102
ENSEMBLE_STATE_FAILED ,
@@ -215,11 +216,12 @@ async def _failed_handler(self, events: Sequence[EnsembleFailed]) -> None:
215
216
def ensemble (self ) -> Ensemble :
216
217
return self ._ensemble
217
218
218
- def cancel_gracefully (self ) -> None :
219
+ def cancel_gracefully_synced (self ) -> None :
220
+ self ._ee_tasks .append (self ._running_loop .create_task (self .cancel_gracefully ()))
221
+
222
+ async def cancel_gracefully (self ):
219
223
cancel_event = EEUserCancel ()
220
- self ._ee_tasks .append (
221
- self ._running_loop .create_task (self .handle_client_event (cancel_event ))
222
- )
224
+ await self .handle_client_event (cancel_event )
223
225
224
226
async def handle_client_event (self , event : EEEvent ) -> None :
225
227
if type (event ) is EEUserCancel :
@@ -277,9 +279,9 @@ async def listen_for_messages(self) -> None:
277
279
except asyncio .CancelledError :
278
280
return
279
281
280
- async def forward_checksum (self , event : Event ) -> None :
282
+ async def forward_checksum (self , event : ForwardModelStepChecksum ) -> None :
281
283
# clients still need to receive events via ws
282
- self ._send_to_brm (event )
284
+ self ._handle_event (event )
283
285
await self ._manifest_queue .put (event )
284
286
285
287
async def _server (self ) -> None :
0 commit comments