Create `event_loop` module
Dependencies
- [2]
WFWTKCJNCreate initial Visual Studio Code extension - [3]
72K45XKDRefactor inline credit to improve hover messages - [4]
LQJG2LGQRefactor `PathState` handling to be updated incrementally
Change contents
- replacement in extensions/vscode/src/lib.rs at line 23
use repository::OpenRepositories;use crate::event_loop::Event;use crate::repository::OpenRepositories; - edit in extensions/vscode/src/lib.rs at line 26
mod event_loop; - edit in extensions/vscode/src/lib.rs at line 389
event_loop::start(); - file addition: event_loop[2.54351]
- file addition: mod.rs[0.138]
use std::sync::OnceLock;use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender};static EVENT_SENDER: OnceLock<UnboundedSender<Event>> = OnceLock::new();const EVENT_BATCH_LIMIT: usize = 8;#[derive(Debug)]pub enum Event {}#[tokio::main]#[tracing::instrument(skip_all)]async fn event_loop(mut receiver: UnboundedReceiver<Event>) {tracing::info!("Starting event loop");let mut event_buffer = Vec::with_capacity(EVENT_BATCH_LIMIT);loop {let events_received = receiver.recv_many(&mut event_buffer, EVENT_BATCH_LIMIT).await;if events_received == 0 {// Channel has been closed, stop event looptracing::info!("Shutting down event loop");break;};tracing::debug!(?event_buffer);event_buffer.clear();}}#[tracing::instrument]pub fn start() {let (sender, receiver) = tokio::sync::mpsc::unbounded_channel();if let Err(_existing_value) = EVENT_SENDER.set(sender) {tracing::error!("Event sender has already been initialized");}std::thread::spawn(|| event_loop(receiver));}pub fn send(event: Event) {EVENT_SENDER.get().expect("EVENT_SENDER should be set").send(event).expect("Receiver should be open");} - edit in extensions/vscode/Cargo.toml at line 36
tokio.workspace = true - edit in Cargo.toml at line 52
tokio = { version = "1.48", features = ["full"] } - edit in Cargo.lock at line 2597
"tokio", - edit in Cargo.lock at line 3170
[[package]]name = "signal-hook-registry"version = "1.4.7"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad"dependencies = ["libc",] - edit in Cargo.lock at line 3469
"parking_lot 0.12.5", - edit in Cargo.lock at line 3471
"signal-hook-registry", - edit in Cargo.lock at line 3473
"tokio-macros", - edit in Cargo.lock at line 3475
][[package]]name = "tokio-macros"version = "2.6.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"dependencies = ["proc-macro2","quote","syn",