diff options
author | Dmitry Sharshakov | 2021-08-14 06:25:44 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-08-20 04:43:54 +0000 |
commit | b3be6b269aaf8b81d74ca4f0001254d8a17a6c76 (patch) | |
tree | 9fd7ca01b3592163806ff9a27fdc0eae140598fd | |
parent | 0777948fc03f9edeec33d13175d6631331409e9c (diff) |
dap-basic: parse stop event
-rw-r--r-- | helix-dap/examples/dap-basic.rs | 6 | ||||
-rw-r--r-- | helix-dap/src/client.rs | 12 | ||||
-rw-r--r-- | helix-dap/src/lib.rs | 2 |
3 files changed, 17 insertions, 3 deletions
diff --git a/helix-dap/examples/dap-basic.rs b/helix-dap/examples/dap-basic.rs index 3331c6bb..eef64be3 100644 --- a/helix-dap/examples/dap-basic.rs +++ b/helix-dap/examples/dap-basic.rs @@ -1,4 +1,4 @@ -use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint}; +use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint, StoppedEventBody}; use serde::{Deserialize, Serialize}; use serde_json::from_value; use tokio::sync::mpsc::Receiver; @@ -75,7 +75,9 @@ pub async fn main() -> Result<()> { println!("configurationDone: {:?}", client.configuration_done().await); - println!("stopped: {:?}", stopped_event.recv().await); + let stop: StoppedEventBody = + from_value(stopped_event.recv().await.unwrap().body.unwrap()).unwrap(); + println!("stopped: {:?}", stop); println!("threads: {:#?}", client.threads().await); let bt = client.stack_trace(1).await.expect("expected stack trace"); diff --git a/helix-dap/src/client.rs b/helix-dap/src/client.rs index ef7bb153..a12238ae 100644 --- a/helix-dap/src/client.rs +++ b/helix-dap/src/client.rs @@ -267,6 +267,18 @@ pub struct OutputEventBody { pub data: Option<Value>, } +#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct StoppedEventBody { + pub reason: String, + pub description: Option<String>, + pub thread_id: Option<usize>, + pub preserve_focus_hint: Option<bool>, + pub text: Option<String>, + pub all_threads_stopped: Option<bool>, + pub hit_breakpoint_ids: Option<Vec<usize>>, +} + #[derive(Debug)] pub struct Client { id: usize, diff --git a/helix-dap/src/lib.rs b/helix-dap/src/lib.rs index 408f4d3d..87eea8e4 100644 --- a/helix-dap/src/lib.rs +++ b/helix-dap/src/lib.rs @@ -1,7 +1,7 @@ mod client; mod transport; -pub use client::{Breakpoint, Client, OutputEventBody, SourceBreakpoint}; +pub use client::{Breakpoint, Client, OutputEventBody, SourceBreakpoint, StoppedEventBody}; pub use transport::{Event, Payload, Request, Response, Transport}; use thiserror::Error; |