@@ -236,24 +236,21 @@ async fn stdcm(
236
236
237
237
// 2. Compute the earliest start time, maximum running time and maximum departure delay
238
238
// Simulation time without stop duration
239
- let (
240
- simulation_run_time,
241
- virtual_train_schedule,
242
- virtual_train_sim_result,
243
- virtual_train_pathfinding_result,
244
- ) = simulate_train_run (
245
- db_pool. clone ( ) ,
246
- valkey_client. clone ( ) ,
247
- core_client. clone ( ) ,
248
- & stdcm_request,
249
- & infra,
250
- & rolling_stock,
251
- timetable_id,
252
- )
253
- . await ?;
254
- let simulation_run_time = match simulation_run_time {
255
- SimulationTimeResult :: SimulationTime { value } => value,
256
- SimulationTimeResult :: Error { error } => {
239
+ let ( virtual_train_schedule, virtual_train_sim_result, virtual_train_pathfinding_result) =
240
+ simulate_train_run (
241
+ db_pool. clone ( ) ,
242
+ valkey_client. clone ( ) ,
243
+ core_client. clone ( ) ,
244
+ & stdcm_request,
245
+ & infra,
246
+ & rolling_stock,
247
+ timetable_id,
248
+ )
249
+ . await ?;
250
+
251
+ let simulation_run_time = match virtual_train_sim_result. clone ( ) . simulation_run_time ( ) {
252
+ Ok ( value) => value,
253
+ Err ( error) => {
257
254
return Ok ( Json ( STDCMResponse :: PreprocessingSimulationError {
258
255
error : * error,
259
256
} ) )
@@ -579,7 +576,6 @@ fn get_earliest_step_tolerance_window(data: &STDCMRequestPayload) -> u64 {
579
576
}
580
577
581
578
/// Returns a `Result` containing:
582
- /// * `SimulationTimeResult` - The result of the simulation time calculation.
583
579
/// * `TrainSchedule` - The generated train schedule based on the provided data.
584
580
/// * `SimulationResponse` - Simulation response.
585
581
/// * `PathfindingResult` - Pathfinding result.
@@ -591,12 +587,7 @@ async fn simulate_train_run(
591
587
infra : & Infra ,
592
588
rolling_stock : & RollingStockModel ,
593
589
timetable_id : i64 ,
594
- ) -> Result < (
595
- SimulationTimeResult ,
596
- TrainSchedule ,
597
- SimulationResponse ,
598
- PathfindingResult ,
599
- ) > {
590
+ ) -> Result < ( TrainSchedule , SimulationResponse , PathfindingResult ) > {
600
591
// Doesn't matter for now, but eventually it will affect tmp speed limits
601
592
let approx_start_time = get_earliest_step_time ( data) ;
602
593
@@ -638,20 +629,7 @@ async fn simulate_train_run(
638
629
)
639
630
. await ?;
640
631
641
- let simulation_run_time = match sim_result. clone ( ) {
642
- SimulationResponse :: Success { provisional, .. } => SimulationTimeResult :: SimulationTime {
643
- value : * provisional. times . last ( ) . expect ( "empty simulation result" ) ,
644
- } ,
645
- err => SimulationTimeResult :: Error {
646
- error : Box :: from ( err) ,
647
- } ,
648
- } ;
649
- Ok ( (
650
- simulation_run_time,
651
- train_schedule,
652
- sim_result,
653
- pathfinding_result,
654
- ) )
632
+ Ok ( ( train_schedule, sim_result, pathfinding_result) )
655
633
}
656
634
657
635
/// Returns the request's total stop time
@@ -803,12 +781,6 @@ async fn parse_stdcm_steps(
803
781
. collect ( ) )
804
782
}
805
783
806
- #[ derive( Debug ) ]
807
- enum SimulationTimeResult {
808
- SimulationTime { value : u64 } ,
809
- Error { error : Box < SimulationResponse > } ,
810
- }
811
-
812
784
#[ cfg( test) ]
813
785
mod tests {
814
786
use axum:: http:: StatusCode ;
0 commit comments