@@ -206,6 +206,21 @@ pub struct Variable {
206206 pub memory_reference: Option<String>,
207207}
208208
209+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
210+#[serde(rename_all = "camelCase")]
211+pub struct Module {
212+ pub id: String, // TODO: || number
213+ pub name: String,
214+ pub path: Option<PathBuf>,
215+ pub is_optimized: Option<bool>,
216+ pub is_user_code: Option<bool>,
217+ pub version: Option<String>,
218+ pub symbol_status: Option<String>,
219+ pub symbol_file_path: Option<String>,
220+ pub date_time_stamp: Option<String>,
221+ pub address_range: Option<String>,
222+}
223+
209224pub mod requests {
210225 use super::*;
211226 #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
@@ -411,6 +426,69 @@ pub mod requests {
411426
412427pub mod events {
413428 use super::*;
429+
430+ #[derive(Debug, Clone, Serialize, Deserialize)]
431+ #[serde(rename_all = "camelCase")]
432+ #[serde(tag = "event", content = "body")]
433+ // seq is omitted as unused and is not sent by some implementations
434+ pub enum Event {
435+ Initialized,
436+ Stopped(Stopped),
437+ Continued(Continued),
438+ Exited(Exited),
439+ Terminated(Terminated),
440+ Thread(Thread),
441+ Output(Output),
442+ Breakpoint(Breakpoint),
443+ Module(Module),
444+ LoadedSource(LoadedSource),
445+ Process(Process),
446+ Capabilities(Capabilities),
447+ // ProgressStart(),
448+ // ProgressUpdate(),
449+ // ProgressEnd(),
450+ // Invalidated(),
451+ Memory(Memory),
452+ }
453+
454+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
455+ #[serde(rename_all = "camelCase")]
456+ pub struct Stopped {
457+ pub reason: String,
458+ pub description: Option<String>,
459+ pub thread_id: Option<usize>,
460+ pub preserve_focus_hint: Option<bool>,
461+ pub text: Option<String>,
462+ pub all_threads_stopped: Option<bool>,
463+ pub hit_breakpoint_ids: Option<Vec<usize>>,
464+ }
465+
466+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
467+ #[serde(rename_all = "camelCase")]
468+ pub struct Continued {
469+ pub thread_id: usize,
470+ pub all_threads_continued: Option<bool>,
471+ }
472+
473+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
474+ #[serde(rename_all = "camelCase")]
475+ pub struct Exited {
476+ pub exit_code: usize,
477+ }
478+
479+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
480+ #[serde(rename_all = "camelCase")]
481+ pub struct Terminated {
482+ pub restart: Option<Value>,
483+ }
484+
485+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
486+ #[serde(rename_all = "camelCase")]
487+ pub struct Thread {
488+ pub reason: String,
489+ pub thread_id: usize,
490+ }
491+
414492 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
415493 #[serde(rename_all = "camelCase")]
416494 pub struct Output {
@@ -426,13 +504,54 @@ pub mod events {
426504
427505 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
428506 #[serde(rename_all = "camelCase")]
429− pub struct Stopped {
507+ pub struct Breakpoint {
430508 pub reason: String,
431− pub description: Option<String>,
432− pub thread_id: Option<usize>,
433− pub preserve_focus_hint: Option<bool>,
434− pub text: Option<String>,
435− pub all_threads_stopped: Option<bool>,
436− pub hit_breakpoint_ids: Option<Vec<usize>>,
509+ pub breakpoint: super::Breakpoint,
510+ }
511+
512+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
513+ #[serde(rename_all = "camelCase")]
514+ pub struct Module {
515+ pub reason: String,
516+ pub module: super::Module,
517+ }
518+
519+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
520+ #[serde(rename_all = "camelCase")]
521+ pub struct LoadedSource {
522+ pub reason: String,
523+ pub source: super::Source,
524+ }
525+
526+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
527+ #[serde(rename_all = "camelCase")]
528+ pub struct Process {
529+ pub name: String,
530+ pub system_process_id: Option<usize>,
531+ pub is_local_process: Option<bool>,
532+ pub start_method: String, // TODO: use enum
533+ pub pointer_size: Option<usize>,
534+ }
535+
536+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
537+ #[serde(rename_all = "camelCase")]
538+ pub struct Capabilities {
539+ pub module: super::DebuggerCapabilities,
540+ }
541+
542+ // #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
543+ // #[serde(rename_all = "camelCase")]
544+ // pub struct Invalidated {
545+ // pub areas: Vec<InvalidatedArea>,
546+ // pub thread_id: Option<usize>,
547+ // pub stack_frame_id: Option<usize>,
548+ // }
549+
550+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
551+ #[serde(rename_all = "camelCase")]
552+ pub struct Memory {
553+ pub memory_reference: String,
554+ pub offset: usize,
555+ pub count: usize,
437556 }
438557}