lsp_proxy/
processed_message.rs1use crate::{Message, message::Direction};
2
3#[derive(Debug)]
4pub enum ProcessedMessage {
5 Forward(Message),
6 WithMessages {
7 message: Message,
8 generated_messages: Vec<(Direction, Message)>,
9 },
10 Ignore {
11 generated_messages: Vec<(Direction, Message)>,
12 },
13}
14
15impl ProcessedMessage {
16 pub fn get_message(&self) -> Option<&Message> {
17 match self {
18 ProcessedMessage::Forward(msg) => Some(msg),
19 ProcessedMessage::WithMessages { message, .. } => Some(message),
20 ProcessedMessage::Ignore { .. } => None,
21 }
22 }
23
24 pub fn get_generated_messages(&self) -> &[(Direction, Message)] {
25 match self {
26 ProcessedMessage::Forward(_) => &[],
27 ProcessedMessage::WithMessages {
28 generated_messages, ..
29 }
30 | ProcessedMessage::Ignore { generated_messages } => generated_messages,
31 }
32 }
33
34 pub fn into_parts(self) -> (Option<Message>, Vec<(Direction, Message)>) {
35 match self {
36 ProcessedMessage::Forward(msg) => (Some(msg), Vec::new()),
37 ProcessedMessage::WithMessages {
38 message,
39 generated_messages,
40 } => (Some(message), generated_messages),
41 ProcessedMessage::Ignore { generated_messages } => (None, generated_messages),
42 }
43 }
44}