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}
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}