From 9918693037dce8aa4bb6f08741b6812923486c18 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 19 Jun 2024 11:26:03 +0200 Subject: Merging upstream version 1.76.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/lsp-server/src/stdio.rs | 71 ------------------------------------------ 1 file changed, 71 deletions(-) delete mode 100644 vendor/lsp-server/src/stdio.rs (limited to 'vendor/lsp-server/src/stdio.rs') diff --git a/vendor/lsp-server/src/stdio.rs b/vendor/lsp-server/src/stdio.rs deleted file mode 100644 index e487b9b46..000000000 --- a/vendor/lsp-server/src/stdio.rs +++ /dev/null @@ -1,71 +0,0 @@ -use std::{ - io::{self, stdin, stdout}, - thread, -}; - -use log::debug; - -use crossbeam_channel::{bounded, Receiver, Sender}; - -use crate::Message; - -/// Creates an LSP connection via stdio. -pub(crate) fn stdio_transport() -> (Sender, Receiver, IoThreads) { - let (writer_sender, writer_receiver) = bounded::(0); - let writer = thread::spawn(move || { - let stdout = stdout(); - let mut stdout = stdout.lock(); - writer_receiver.into_iter().try_for_each(|it| it.write(&mut stdout))?; - Ok(()) - }); - let (reader_sender, reader_receiver) = bounded::(0); - let reader = thread::spawn(move || { - let stdin = stdin(); - let mut stdin = stdin.lock(); - while let Some(msg) = Message::read(&mut stdin)? { - let is_exit = matches!(&msg, Message::Notification(n) if n.is_exit()); - - debug!("sending message {:#?}", msg); - reader_sender.send(msg).expect("receiver was dropped, failed to send a message"); - - if is_exit { - break; - } - } - Ok(()) - }); - let threads = IoThreads { reader, writer }; - (writer_sender, reader_receiver, threads) -} - -// Creates an IoThreads -pub(crate) fn make_io_threads( - reader: thread::JoinHandle>, - writer: thread::JoinHandle>, -) -> IoThreads { - IoThreads { reader, writer } -} - -pub struct IoThreads { - reader: thread::JoinHandle>, - writer: thread::JoinHandle>, -} - -impl IoThreads { - pub fn join(self) -> io::Result<()> { - match self.reader.join() { - Ok(r) => r?, - Err(err) => { - println!("reader panicked!"); - std::panic::panic_any(err) - } - } - match self.writer.join() { - Ok(r) => r, - Err(err) => { - println!("writer panicked!"); - std::panic::panic_any(err); - } - } - } -} -- cgit v1.2.3