aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Sharshakov2021-08-14 06:25:44 +0000
committerBlaž Hrastnik2021-08-20 04:43:54 +0000
commitb3be6b269aaf8b81d74ca4f0001254d8a17a6c76 (patch)
tree9fd7ca01b3592163806ff9a27fdc0eae140598fd
parent0777948fc03f9edeec33d13175d6631331409e9c (diff)
dap-basic: parse stop event
-rw-r--r--helix-dap/examples/dap-basic.rs6
-rw-r--r--helix-dap/src/client.rs12
-rw-r--r--helix-dap/src/lib.rs2
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;