killApp function

Future<KillResult> killApp(
  1. KillInput _
)

Stops the running app process referenced by the session's PID file.

Returns KillSuccess on success, KillNoSession if no PID file is present, or KillFailed if the process refused to die after SIGKILL.

Implementation

Future<KillResult> killApp(KillInput _) async {
  if (!hasMeaningfulSessionFiles()) {
    return const KillNoSession();
  }

  final logCollectorStopped = await _stopLogCollector();
  final controllerStopped = await _stopThroughController();
  if (controllerStopped) {
    final visibleProcessesStopped = await _stopVisibleSessionProcesses();
    cleanupTempFiles();
    if (logCollectorStopped && visibleProcessesStopped) {
      return const KillSuccess();
    }

    return const KillFailed();
  }

  final fallbackStopped = await _stopVisibleSessionProcesses();
  cleanupTempFiles();
  if (logCollectorStopped && fallbackStopped) {
    return const KillSuccess();
  }

  return const KillFailed();
}