@@ -581,7 +581,7 @@ pub trait DataActor:
581
581
fn handle_time_event ( & mut self , event : & TimeEvent ) {
582
582
log_received ( & event) ;
583
583
584
- if let Err ( e) = self . on_time_event ( event) {
584
+ if let Err ( e) = DataActor :: on_time_event ( self , event) {
585
585
log_error ( & e) ;
586
586
}
587
587
}
@@ -590,7 +590,7 @@ pub trait DataActor:
590
590
fn handle_event ( & mut self , event : & dyn Any ) {
591
591
log_received ( & event) ;
592
592
593
- if let Err ( e) = self . on_event ( event) {
593
+ if let Err ( e) = DataActor :: on_event ( self , event) {
594
594
log_error ( & e) ;
595
595
}
596
596
}
@@ -1370,69 +1370,48 @@ where
1370
1370
self . state
1371
1371
}
1372
1372
1373
+ fn transition_state ( & mut self , trigger : ComponentTrigger ) -> anyhow:: Result < ( ) > {
1374
+ self . state = self . state . transition ( & trigger) ?;
1375
+ log:: info!( "{}" , self . state) ;
1376
+ Ok ( ( ) )
1377
+ }
1378
+
1373
1379
fn register (
1374
1380
& mut self ,
1375
1381
trader_id : TraderId ,
1376
1382
clock : Rc < RefCell < dyn Clock > > ,
1377
1383
cache : Rc < RefCell < Cache > > ,
1378
1384
) -> anyhow:: Result < ( ) > {
1379
- DataActorCore :: register ( self , trader_id, clock, cache)
1385
+ DataActorCore :: register ( self , trader_id, clock, cache) ?;
1386
+ self . initialize ( )
1380
1387
}
1381
1388
1382
- fn start ( & mut self ) -> anyhow:: Result < ( ) > {
1383
- self . transition_state ( ComponentTrigger :: Start ) ?; // -> Starting
1384
-
1385
- if let Err ( e) = DataActor :: on_start ( self ) {
1386
- log_error ( & e) ;
1387
- return Err ( e) ; // Halt state transition
1388
- }
1389
-
1390
- self . transition_state ( ComponentTrigger :: StartCompleted ) ?;
1391
-
1392
- Ok ( ( ) )
1389
+ fn on_start ( & mut self ) -> anyhow:: Result < ( ) > {
1390
+ DataActor :: on_start ( self )
1393
1391
}
1394
1392
1395
- fn stop ( & mut self ) -> anyhow:: Result < ( ) > {
1396
- self . transition_state ( ComponentTrigger :: Stop ) ?; // -> Stopping
1397
-
1398
- if let Err ( e) = DataActor :: on_stop ( self ) {
1399
- log_error ( & e) ;
1400
- return Err ( e) ; // Halt state transition
1401
- }
1402
-
1403
- self . transition_state ( ComponentTrigger :: StopCompleted ) ?;
1404
-
1405
- Ok ( ( ) )
1393
+ fn on_stop ( & mut self ) -> anyhow:: Result < ( ) > {
1394
+ DataActor :: on_stop ( self )
1406
1395
}
1407
1396
1408
- fn reset ( & mut self ) -> anyhow:: Result < ( ) > {
1409
- self . transition_state ( ComponentTrigger :: Reset ) ?; // -> Resetting
1410
-
1411
- if let Err ( e) = DataActor :: on_reset ( self ) {
1412
- log_error ( & e) ;
1413
- return Err ( e) ; // Halt state transition
1414
- }
1415
-
1416
- self . transition_state ( ComponentTrigger :: ResetCompleted ) ?;
1417
-
1418
- Ok ( ( ) )
1397
+ fn on_resume ( & mut self ) -> anyhow:: Result < ( ) > {
1398
+ DataActor :: on_resume ( self )
1419
1399
}
1420
1400
1421
- fn dispose ( & mut self ) -> anyhow:: Result < ( ) > {
1422
- self . transition_state ( ComponentTrigger :: Dispose ) ?; // -> Disposing
1423
-
1424
- if let Err ( e) = DataActor :: on_dispose ( self ) {
1425
- log_error ( & e) ;
1426
- return Err ( e) ; // Halt state transition
1427
- }
1401
+ fn on_degrade ( & mut self ) -> anyhow:: Result < ( ) > {
1402
+ DataActor :: on_degrade ( self )
1403
+ }
1428
1404
1429
- self . transition_state ( ComponentTrigger :: DisposeCompleted ) ?;
1405
+ fn on_fault ( & mut self ) -> anyhow:: Result < ( ) > {
1406
+ DataActor :: on_fault ( self )
1407
+ }
1430
1408
1431
- Ok ( ( ) )
1409
+ fn on_reset ( & mut self ) -> anyhow:: Result < ( ) > {
1410
+ DataActor :: on_reset ( self )
1432
1411
}
1433
1412
1434
- fn handle_event ( & mut self , event : TimeEvent ) {
1435
- DataActor :: handle_time_event ( self , & event )
1413
+ fn on_dispose ( & mut self ) -> anyhow :: Result < ( ) > {
1414
+ DataActor :: on_dispose ( self )
1436
1415
}
1437
1416
}
1438
1417
@@ -1488,28 +1467,6 @@ impl DataActorCore {
1488
1467
}
1489
1468
}
1490
1469
1491
- fn default_actor_id ( config : & DataActorConfig ) -> ActorId {
1492
- let memory_address = std:: ptr:: from_ref ( config) as * const _ as usize ;
1493
- ActorId :: from ( format ! ( "{}-{memory_address}" , stringify!( DataActor ) ) )
1494
- }
1495
-
1496
- fn transition_state ( & mut self , trigger : ComponentTrigger ) -> anyhow:: Result < ( ) > {
1497
- self . state = self . state . transition ( & trigger) ?;
1498
- log:: info!( "{}" , self . state) ;
1499
- Ok ( ( ) )
1500
- }
1501
-
1502
- // TODO: TBD initialization flow (potentially remove initialize())
1503
-
1504
- /// Initializes the actor.
1505
- ///
1506
- /// # Errors
1507
- ///
1508
- /// Returns an error if the initialization state transition fails.
1509
- pub fn initialize ( & mut self ) -> anyhow:: Result < ( ) > {
1510
- self . transition_state ( ComponentTrigger :: Initialize )
1511
- }
1512
-
1513
1470
/// Returns the trader ID this actor is registered to.
1514
1471
pub fn trader_id ( & self ) -> Option < TraderId > {
1515
1472
self . trader_id
@@ -1519,42 +1476,9 @@ impl DataActorCore {
1519
1476
self . actor_id
1520
1477
}
1521
1478
1522
- // TODO: Extract this common state logic and handling out to some component module
1523
- pub fn state ( & self ) -> ComponentState {
1524
- self . state
1525
- }
1526
-
1527
- /// Resume the actor.
1528
- ///
1529
- /// # Errors
1530
- ///
1531
- /// Returns an error if the resume state transition fails.
1532
- pub fn resume ( & mut self ) -> anyhow:: Result < ( ) > {
1533
- self . transition_state ( ComponentTrigger :: Resume ) ?; // -> Resuming
1534
- self . transition_state ( ComponentTrigger :: ResumeCompleted ) ?; // -> Running
1535
- Ok ( ( ) )
1536
- }
1537
-
1538
- /// Degrade the actor.
1539
- ///
1540
- /// # Errors
1541
- ///
1542
- /// Returns an error if the degrade state transition fails.
1543
- pub fn degrade ( & mut self ) -> anyhow:: Result < ( ) > {
1544
- self . transition_state ( ComponentTrigger :: Degrade ) ?; // -> Degrading
1545
- self . transition_state ( ComponentTrigger :: DegradeCompleted ) ?; // -> Degraded
1546
- Ok ( ( ) )
1547
- }
1548
-
1549
- /// Fault the actor.
1550
- ///
1551
- /// # Errors
1552
- ///
1553
- /// Returns an error if the fault state transition fails.
1554
- pub fn fault ( & mut self ) -> anyhow:: Result < ( ) > {
1555
- self . transition_state ( ComponentTrigger :: Fault ) ?; // -> Faulting
1556
- self . transition_state ( ComponentTrigger :: FaultCompleted ) ?; // -> Faulted
1557
- Ok ( ( ) )
1479
+ fn default_actor_id ( config : & DataActorConfig ) -> ActorId {
1480
+ let memory_address = std:: ptr:: from_ref ( config) as * const _ as usize ;
1481
+ ActorId :: from ( format ! ( "{}-{memory_address}" , stringify!( DataActor ) ) )
1558
1482
}
1559
1483
1560
1484
pub fn timestamp_ns ( & self ) -> UnixNanos {
@@ -1601,8 +1525,6 @@ impl DataActorCore {
1601
1525
self . clock = Some ( clock) ;
1602
1526
self . cache = Some ( cache) ;
1603
1527
1604
- self . transition_state ( ComponentTrigger :: Initialize ) ?;
1605
-
1606
1528
log:: info!( "Registered {} with trader {trader_id}" , self . actor_id) ;
1607
1529
Ok ( ( ) )
1608
1530
}
0 commit comments