mirror of
https://github.com/SpaceManiac/SpacemanDMM.git
synced 2025-12-23 05:36:47 +00:00
Open a TcpListener upon StartDebugger request
This commit is contained in:
parent
5acc28dbc2
commit
215853d431
2 changed files with 27 additions and 0 deletions
|
|
@ -35,6 +35,25 @@ use self::dap_types::*;
|
|||
use self::launched::Launched;
|
||||
use self::extools::Extools;
|
||||
|
||||
pub fn start_server(dreamseeker_exe: String) -> std::io::Result<u16> {
|
||||
use std::net::*;
|
||||
|
||||
let listener = TcpListener::bind((Ipv4Addr::LOCALHOST, 0))?;
|
||||
let port = listener.local_addr()?.port();
|
||||
eprintln!("listening for debugger connection on port {}", port);
|
||||
|
||||
std::thread::Builder::new()
|
||||
.name(format!("DAP listener on port {}", port))
|
||||
.spawn(|| {
|
||||
let mut debugger = Debugger::new(dreamseeker_exe);
|
||||
let (stream, addr) = listener.accept().unwrap();
|
||||
drop(listener);
|
||||
// TODO
|
||||
})?;
|
||||
|
||||
Ok(port)
|
||||
}
|
||||
|
||||
pub fn debugger_main<I: Iterator<Item=String>>(mut args: I) {
|
||||
eprintln!("acting as debug adapter");
|
||||
let mut dreamseeker_exe = None;
|
||||
|
|
|
|||
|
|
@ -1570,6 +1570,14 @@ handle_method_call! {
|
|||
Some(DocumentSymbolResponse::Nested(find_document_symbols(&mut iter, end)))
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// debugger entry point
|
||||
on StartDebugger(&mut self, params) {
|
||||
extras::StartDebuggerResult {
|
||||
port: debugger::start_server(params.dreamseeker_exe).map_err(invalid_request)?,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
handle_notification! {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue