lsp_proxy/
processed_message.rs

1use 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}
11
12impl ProcessedMessage {
13    pub fn get_message(&self) -> Option<&Message> {
14        match self {
15            ProcessedMessage::Forward(msg) => Some(msg),
16            ProcessedMessage::WithMessages { message, .. } => Some(message),
17        }
18    }
19
20    pub fn get_generated_messages(&self) -> &[(Direction, Message)] {
21        match self {
22            ProcessedMessage::Forward(_) => &[],
23            ProcessedMessage::WithMessages {
24                generated_messages, ..
25            } => generated_messages,
26        }
27    }
28
29    pub fn into_parts(self) -> (Option<Message>, Vec<(Direction, Message)>) {
30        match self {
31            ProcessedMessage::Forward(msg) => (Some(msg), Vec::new()),
32            ProcessedMessage::WithMessages {
33                message,
34                generated_messages,
35            } => (Some(message), generated_messages),
36        }
37    }
38}