da-viper wrote:
> Would it be possible to have the RequestHandlers advertise whether or not
> they should be deferred until the configuration is done (e.g.
> DeferredUntilConfigurationDone), and keep the latter an implementation detail
> of the DAP class? And strictly handle deferring at the queue level?
Yes it can,
> What I don't like is how this introduces more statefulness, especially in the
> request handlers. The queueing/deferring logic isn't trivial and I would
> strongly prefer if we could keep it centralized as much as possible. With
> this PR we end up with both a separate queue and a method that makes the Run
> operation behaves differently depending on the global DAP state (i.e. if
> we've send the configuration request).
The plan is to partially resolve the request and then completing the request
later on. for example.
with the launch argument, the new method will be
`optional<Response> DeferUntilConfig(
const Arguments &arguments, bool &defer_request)`
```cpp
std::optional<LaunchResponse> LaunchRequestHandler::DeferUntilConfig(
const LaunchRequestArguments &arguments, bool &defer_request) const {
// setups the target and initcommands.
if (LaunchResponse err = PreLaunch(arguments)) {
return err;
}
defer_request = !dap.configuration_done;
return std::nullopt;
}
```
since this it is then deferred it will then complete the remaining request
after the configuration is done. like so
```cpp
Error LaunchRequestHandler::Run(const LaunchRequestArguments &arguments) const {
if (Error err = dap.RunPreRunCommands())
return err;
if (Error err = LaunchProcess(arguments))
return err;
dap.RunPostRunCommands();
return Error::success();
}
```
The could potentially fix the breakpoints problem and also launch after
configuration. Not 100% sure this is the best way hence why I have not included
the commit.
https://github.com/llvm/llvm-project/pull/140260
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits