Skip to content

Commit b90862d

Browse files
remove global client state in favor of direct Client on server (#193)
1 parent 6645ccc commit b90862d

File tree

3 files changed

+15
-243
lines changed

3 files changed

+15
-243
lines changed

crates/djls-server/src/client.rs

Lines changed: 0 additions & 235 deletions
This file was deleted.

crates/djls-server/src/lib.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
mod client;
21
mod completions;
32
mod logging;
43
mod queue;
@@ -46,13 +45,17 @@ pub fn run() -> Result<()> {
4645
let stdout = tokio::io::stdout();
4746

4847
let (service, socket) = LspService::build(|client| {
49-
client::init_client(client);
50-
51-
let log_guard = logging::init_tracing(|message_type, message| {
52-
client::log_message(message_type, message);
48+
let log_guard = logging::init_tracing({
49+
let client = client.clone();
50+
move |message_type, message| {
51+
let client = client.clone();
52+
tokio::spawn(async move {
53+
client.log_message(message_type, message).await;
54+
});
55+
}
5356
});
5457

55-
DjangoLanguageServer::new(log_guard)
58+
DjangoLanguageServer::new(client, log_guard)
5659
})
5760
.finish();
5861

crates/djls-server/src/server.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use djls_workspace::FileKind;
66
use tokio::sync::RwLock;
77
use tower_lsp_server::jsonrpc::Result as LspResult;
88
use tower_lsp_server::lsp_types;
9+
use tower_lsp_server::Client;
910
use tower_lsp_server::LanguageServer;
1011
use tracing_appender::non_blocking::WorkerGuard;
1112

@@ -16,15 +17,18 @@ const SERVER_NAME: &str = "Django Language Server";
1617
const SERVER_VERSION: &str = "0.1.0";
1718

1819
pub struct DjangoLanguageServer {
20+
#[allow(dead_code)] // will be needed when diagnostics and other features are added
21+
client: Client,
1922
session: Arc<RwLock<Option<Session>>>,
2023
queue: Queue,
2124
_log_guard: WorkerGuard,
2225
}
2326

2427
impl DjangoLanguageServer {
2528
#[must_use]
26-
pub fn new(log_guard: WorkerGuard) -> Self {
29+
pub fn new(client: Client, log_guard: WorkerGuard) -> Self {
2730
Self {
31+
client,
2832
session: Arc::new(RwLock::new(None)),
2933
queue: Queue::new(),
3034
_log_guard: log_guard,
@@ -131,7 +135,7 @@ impl LanguageServer for DjangoLanguageServer {
131135
async fn initialized(&self, _params: lsp_types::InitializedParams) {
132136
tracing::info!("Server received initialized notification.");
133137

134-
self.with_session_task(|session_arc| async move {
138+
self.with_session_task(move |session_arc| async move {
135139
let project_path_and_venv = {
136140
let session_lock = session_arc.read().await;
137141
match &*session_lock {

0 commit comments

Comments
 (0)