@ -33,6 +33,7 @@ pub struct Client {
server_tx : UnboundedSender < Payload > ,
server_tx : UnboundedSender < Payload > ,
request_counter : AtomicU64 ,
request_counter : AtomicU64 ,
connection_type : Option < ConnectionType > ,
connection_type : Option < ConnectionType > ,
starting_request_args : Option < Value > ,
pub caps : Option < DebuggerCapabilities > ,
pub caps : Option < DebuggerCapabilities > ,
// thread_id -> frames
// thread_id -> frames
pub stack_frames : HashMap < ThreadId , Vec < StackFrame > > ,
pub stack_frames : HashMap < ThreadId , Vec < StackFrame > > ,
@ -87,6 +88,7 @@ impl Client {
request_counter : AtomicU64 ::new ( 0 ) ,
request_counter : AtomicU64 ::new ( 0 ) ,
caps : None ,
caps : None ,
connection_type : None ,
connection_type : None ,
starting_request_args : None ,
stack_frames : HashMap ::new ( ) ,
stack_frames : HashMap ::new ( ) ,
thread_states : HashMap ::new ( ) ,
thread_states : HashMap ::new ( ) ,
thread_id : None ,
thread_id : None ,
@ -158,6 +160,10 @@ impl Client {
)
)
}
}
pub fn starting_request_args ( & self ) -> & Option < Value > {
& self . starting_request_args
}
pub async fn tcp_process (
pub async fn tcp_process (
cmd : & str ,
cmd : & str ,
args : Vec < & str > ,
args : Vec < & str > ,
@ -356,14 +362,25 @@ impl Client {
pub fn launch ( & mut self , args : serde_json ::Value ) -> impl Future < Output = Result < Value > > {
pub fn launch ( & mut self , args : serde_json ::Value ) -> impl Future < Output = Result < Value > > {
self . connection_type = Some ( ConnectionType ::Launch ) ;
self . connection_type = Some ( ConnectionType ::Launch ) ;
self . starting_request_args = Some ( args . clone ( ) ) ;
self . call ::< requests ::Launch > ( args )
self . call ::< requests ::Launch > ( args )
}
}
pub fn attach ( & mut self , args : serde_json ::Value ) -> impl Future < Output = Result < Value > > {
pub fn attach ( & mut self , args : serde_json ::Value ) -> impl Future < Output = Result < Value > > {
self . connection_type = Some ( ConnectionType ::Attach ) ;
self . connection_type = Some ( ConnectionType ::Attach ) ;
self . starting_request_args = Some ( args . clone ( ) ) ;
self . call ::< requests ::Attach > ( args )
self . call ::< requests ::Attach > ( args )
}
}
pub fn restart ( & self ) -> impl Future < Output = Result < Value > > {
let args = if let Some ( args ) = & self . starting_request_args {
args . clone ( )
} else {
Value ::Null
} ;
self . call ::< requests ::Restart > ( args )
}
pub async fn set_breakpoints (
pub async fn set_breakpoints (
& self ,
& self ,
file : PathBuf ,
file : PathBuf ,