terminateRequest method

  1. @override
Future<void> terminateRequest(
  1. Request request,
  2. TerminateArguments? args,
  3. void sendResponse()
)

terminateRequest is called by the client when it wants us to gracefully shut down.

It's not very obvious from the names, but terminateRequest is sent first (a request for a graceful shutdown) and disconnectRequest second (a request for a forced shutdown).

https://microsoft.github.io/debug-adapter-protocol/overview#debug-session-end

Implementation

@override
Future<void> terminateRequest(
  Request request,
  TerminateArguments? args,
  void Function() sendResponse,
) async {
  isTerminating = true;

  await terminateImpl();
  await shutdownDebugee();
  sendResponse();

  await shutdown();
}