scan_state_store->load(); if ( ! $action->fits( $state->run_state ) ) { return; } if ( ScanAction::Start === $action ) { $this->scan_starter->start( $state ); return; } $this->scan_state_store->save( $this->next_state( $action, $state ) ); } private function next_state( ScanAction $action, ScanState $state ): ScanState { if ( ScanAction::Cancel === $action ) { return $this->transitions->cancelled( $state ); } $run_state = ScanAction::Pause === $action ? ScanRunState::Paused : ScanRunState::Running; return $this->transitions->with_run_state( $state, $run_state ); } }