Skip to content

Commit 062a9d3

Browse files
committed
rename
1 parent e921372 commit 062a9d3

File tree

16 files changed

+247
-282
lines changed

16 files changed

+247
-282
lines changed

engine/language_server/src/lib.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::num::NonZeroUsize;
22

33
use anyhow::Context;
44
pub use edit::{DocumentKey, PositionEncoding, TextDocument};
5-
use playground_server::{Orwie12Message, Reofji32Message};
5+
use playground_server::{WebviewNotification, WebviewRouterMessage};
66
pub use session::{ClientSettings, DocumentQuery, DocumentSnapshot, Session};
77
use tokio::sync::broadcast;
88

@@ -34,8 +34,8 @@ pub(crate) fn version() -> &'static str {
3434
pub fn run_server() -> anyhow::Result<()> {
3535
let tokio_runtime = tokio::runtime::Runtime::new()?;
3636

37-
let (reofji32_tx, reofji32_rx) = broadcast::channel(1000);
38-
let (orwie12_tx, orwie12_rx) = broadcast::channel(1000);
37+
let (webview_router_to_websocket_tx, webview_router_to_websocket_rx) = broadcast::channel(1000);
38+
let (webview_router_input_tx, webview_router_input_rx) = broadcast::channel(1000);
3939

4040
let port_config = playground_server::PortConfiguration {
4141
base_port: 3700,
@@ -44,16 +44,15 @@ pub fn run_server() -> anyhow::Result<()> {
4444
let port_picks = tokio_runtime.block_on(playground_server::pick_ports(port_config))?;
4545

4646
{
47-
let reofji32_tx = reofji32_tx.clone();
48-
let orwie12_tx = orwie12_tx.clone();
47+
let webview_router_to_websocket_tx = webview_router_to_websocket_tx.clone();
48+
let webview_router_input_tx = webview_router_input_tx.clone();
4949
tokio_runtime.spawn(futures::future::join(
5050
async move {
5151
eprintln!("Playground server started");
5252
let server = playground_server::PlaygroundServer {
5353
app_state: playground_server::AppState {
54-
reofji32_tx,
55-
reofji32_rx,
56-
orwie12_tx: orwie12_tx.clone(),
54+
webview_router_to_websocket_rx: webview_router_to_websocket_rx,
55+
webview_router_input_tx: webview_router_input_tx.clone(),
5756
playground_port: port_picks.playground_port,
5857
proxy_port: port_picks.proxy_port,
5958
editor_config: std::sync::Arc::new(std::sync::RwLock::new(
@@ -93,9 +92,9 @@ pub fn run_server() -> anyhow::Result<()> {
9392
worker_threads,
9493
ServerArgs {
9594
tokio_runtime,
96-
reofji32_tx,
97-
orwie12_rx,
98-
orwie12_tx: orwie12_tx.clone(),
95+
webview_router_to_websocket_tx,
96+
webview_router_input_rx,
97+
webview_router_input_tx: webview_router_input_tx.clone(),
9998
playground_port: port_picks.playground_port,
10099
proxy_port: port_picks.proxy_port,
101100
},

engine/language_server/src/server.rs

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use lsp_types::{
1919
TextDocumentSyncKind, TextDocumentSyncOptions, TextDocumentSyncSaveOptions, Url,
2020
WorkspaceClientCapabilities, WorkspaceFoldersServerCapabilities, WorkspaceServerCapabilities,
2121
};
22-
use playground_server::{FrontendMessage, Orwie12Message, Reofji32Message};
22+
use playground_server::{FrontendMessage, WebviewNotification, WebviewRouterMessage};
2323
use schedule::Task;
2424
use serde::{Deserialize, Serialize};
2525
use serde_json::json;
@@ -49,9 +49,9 @@ pub type Result<T> = std::result::Result<T, api::Error>;
4949

5050
pub(crate) struct ServerArgs {
5151
pub tokio_runtime: tokio::runtime::Runtime,
52-
pub reofji32_tx: broadcast::Sender<Reofji32Message>,
53-
pub orwie12_rx: broadcast::Receiver<Orwie12Message>,
54-
pub orwie12_tx: broadcast::Sender<Orwie12Message>,
52+
pub webview_router_to_websocket_tx: broadcast::Sender<WebviewNotification>,
53+
pub webview_router_input_rx: broadcast::Receiver<WebviewRouterMessage>,
54+
pub webview_router_input_tx: broadcast::Sender<WebviewRouterMessage>,
5555
pub playground_port: u16,
5656
pub proxy_port: u16,
5757
}
@@ -176,8 +176,8 @@ impl Server {
176176
global_settings,
177177
&workspaces,
178178
args.playground_port,
179-
args.orwie12_tx.clone(),
180-
args.reofji32_tx.clone(),
179+
args.webview_router_input_tx.clone(),
180+
args.webview_router_to_websocket_tx.clone(),
181181
client_version,
182182
)?;
183183

@@ -209,16 +209,32 @@ impl Server {
209209
});
210210
}
211211
{
212+
// Start the webview router loop
213+
//
214+
// This is the communication bridge between the webview and IDE in non-VSCode environments
215+
// and allows the webview to send messages to Jetbrains and allows Jetbrains to send messages
216+
// to the webview.
217+
//
218+
// webview->IDE is generally backed by the webview POSTing to /webview/SEND_LSP_NOTIFICATION_TO_IDE,
219+
// and the language server will then forward that to the IDE
220+
// IDE->webview is generally backed by the IDE calling POST /webview/SEND_LSP_NOTIFICATION_TO_WEBVIEW,
221+
// and the language server will then forward that to the webview
222+
//
223+
// (Note that although the language-server pretends to offer a request-response API, it does not
224+
// block on either the IDE or webview responding before responding to its caller.)
225+
//
226+
// Incoming messages are received via webview_router_input_tx, which the router will then decide to
227+
// dispatch to either the webview (via its websocket) or the IDE (via its LSP connection).
212228
let lsp_sender = server.connection.make_sender();
213-
let mut orwie12_rx = server.args.orwie12_rx.resubscribe();
214-
let reofji32_tx = server.args.reofji32_tx.clone();
229+
let mut webview_router_input_rx = server.args.webview_router_input_rx.resubscribe();
230+
let webview_router_to_websocket_tx = server.args.webview_router_to_websocket_tx.clone();
215231
let session = server.session.clone();
216232
server.args.tokio_runtime.spawn(async move {
217233
tracing::info!("Starting playground rx loop");
218-
while let Ok(msg) = orwie12_rx.recv().await {
234+
while let Ok(msg) = webview_router_input_rx.recv().await {
219235
tracing::info!("playground rx loop: {:?}", msg);
220236
match msg {
221-
Orwie12Message::WasmIsInitialized => {
237+
WebviewRouterMessage::WasmIsInitialized => {
222238
tracing::info!("Received playground INITIALIZED request");
223239
let projects = session.baml_src_projects.lock();
224240
for (_, project) in projects.iter() {
@@ -239,8 +255,8 @@ impl Server {
239255
(key, contents)
240256
})
241257
.collect();
242-
let _ = reofji32_tx
243-
.send(Reofji32Message::PlaygroundMessage(
258+
let _ = webview_router_to_websocket_tx
259+
.send(WebviewNotification::PlaygroundMessage(
244260
FrontendMessage::add_project {
245261
root_path: project
246262
.root_path()
@@ -254,18 +270,18 @@ impl Server {
254270
});
255271
}
256272
}
257-
Orwie12Message::SendLspNotificationToIde(notification) => {
273+
WebviewRouterMessage::SendLspNotificationToIde(notification) => {
258274
tracing::info!("Received playground SEND_LSP_NOTIFICATION request: {:?}", notification);
259275
let _ = lsp_sender
260276
.send(Message::Notification(notification))
261277
.inspect_err(|e| {
262278
tracing::error!("Failed to forward SEND_LSP_NOTIFICATION message to language-server: {e}");
263279
});
264280
}
265-
Orwie12Message::SendLspNotificationToWebview(notification) => {
281+
WebviewRouterMessage::SendLspNotificationToWebview(notification) => {
266282
tracing::info!("Received playground SEND_LSP_NOTIFICATION_TO_WEBVIEW request: {:?}", notification);
267-
let _ = reofji32_tx
268-
.send(Reofji32Message::PlaygroundMessage(
283+
let _ = webview_router_to_websocket_tx
284+
.send(WebviewNotification::PlaygroundMessage(
269285
FrontendMessage::lsp_message {
270286
method: notification.method,
271287
params: notification.params,
@@ -275,9 +291,9 @@ impl Server {
275291
tracing::error!("Failed to forward SEND_LSP_NOTIFICATION_TO_WEBVIEW message to webview: {e}");
276292
});
277293
}
278-
Orwie12Message::FrontendMessage(msg) => {
279-
let _ = reofji32_tx
280-
.send(Reofji32Message::PlaygroundMessage(msg))
294+
WebviewRouterMessage::FrontendMessage(msg) => {
295+
let _ = webview_router_to_websocket_tx
296+
.send(WebviewNotification::PlaygroundMessage(msg))
281297
.inspect_err(|e| {
282298
tracing::error!("Failed to forward FrontendMessage to playground: {e}");
283299
});
@@ -366,7 +382,7 @@ impl Server {
366382
&self.client_capabilities,
367383
self.session,
368384
self.worker_threads,
369-
self.args.reofji32_tx,
385+
self.args.webview_router_to_websocket_tx,
370386
)?;
371387
self.connection.close()?;
372388
Ok(())
@@ -382,7 +398,7 @@ impl Server {
382398
_client_capabilities: &ClientCapabilities,
383399
mut session: Session,
384400
worker_threads: NonZeroUsize,
385-
reofji32_tx: broadcast::Sender<Reofji32Message>,
401+
webview_router_to_websocket_tx: broadcast::Sender<WebviewNotification>,
386402
) -> anyhow::Result<()> {
387403
// Ensure we have a notifier for reload operations
388404
let client = client::Client::new(connection.make_sender());
@@ -398,7 +414,7 @@ impl Server {
398414
if connection.handle_shutdown(&msg)? {
399415
break;
400416
}
401-
// reofji32_tx.send(LangServerToWasmMessage::LspMessage(msg.clone()))?;
417+
// webview_router_to_websocket_tx.send(LangServerToWasmMessage::LspMessage(msg.clone()))?;
402418
let tasks = match msg {
403419
Message::Request(req) => vec![api::request(req)],
404420
Message::Notification(notification) => api::notification(notification),

engine/language_server/src/server/api/notifications/did_change.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::{collections::HashMap, time::Instant};
33
use lsp_types::{
44
notification::DidChangeTextDocument, DidChangeTextDocumentParams, PublishDiagnosticsParams,
55
};
6-
use playground_server::{FrontendMessage, Orwie12Message};
6+
use playground_server::{FrontendMessage, WebviewRouterMessage};
77

88
use crate::{
99
server::{
@@ -84,8 +84,8 @@ impl SyncNotificationHandler for DidChangeTextDocumentHandler {
8484
})
8585
.collect();
8686
session
87-
.orwie12_tx
88-
.send(Orwie12Message::FrontendMessage(
87+
.webview_router_input_tx
88+
.send(WebviewRouterMessage::FrontendMessage(
8989
FrontendMessage::add_project {
9090
root_path: project.root_path().to_string_lossy().to_string(),
9191
files: files_map,

engine/language_server/src/server/api/requests/code_action.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ impl SyncRequestHandler for CodeActionHandler {
3333
// TODO: this is the only way to do this in zed i think
3434
// tracing::info!("CodeActionHandler running");
3535
// let _ = session
36-
// .reofji32_tx
36+
// .webview_router_to_websocket_tx
3737
// .send(
3838
// playground_server::LangServerToWasmMessage::PlaygroundMessage(
3939
// playground_server::FrontendMessage::lsp_message {

engine/language_server/src/server/api/requests/execute_command.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::time::Duration;
22

33
use lsp_server::ErrorCode;
44
use lsp_types::{request, ExecuteCommandParams, MessageType};
5-
use playground_server::{FrontendMessage, Orwie12Message};
5+
use playground_server::{FrontendMessage, WebviewRouterMessage};
66
use tokio::time::sleep;
77
use webbrowser;
88

@@ -37,7 +37,7 @@ impl SyncRequestHandler for ExecuteCommand {
3737
// Get the actual playground port from session (determined by server after availability check)
3838
// Fall back to configured port if actual port not set yet
3939

40-
use playground_server::{FrontendMessage, Orwie12Message};
40+
use playground_server::{FrontendMessage, WebviewRouterMessage};
4141

4242
// Construct the URL
4343
let url = format!("http://localhost:{}", session.playground_port);
@@ -62,8 +62,8 @@ impl SyncRequestHandler for ExecuteCommand {
6262
.and_then(|arg| arg.as_str().map(|s| s.to_string()))
6363
{
6464
session
65-
.orwie12_tx
66-
.send(Orwie12Message::FrontendMessage(
65+
.webview_router_input_tx
66+
.send(WebviewRouterMessage::FrontendMessage(
6767
FrontendMessage::select_function {
6868
// TODO: this can't be correct... but it looks like it is
6969
root_path: function_name.to_string(),
@@ -85,8 +85,8 @@ impl SyncRequestHandler for ExecuteCommand {
8585
}
8686
Ok(RegisteredCommands::OpenBamlPanel(args)) => {
8787
let tx = session
88-
.orwie12_tx
89-
.send(Orwie12Message::FrontendMessage(
88+
.webview_router_input_tx
89+
.send(WebviewRouterMessage::FrontendMessage(
9090
FrontendMessage::select_function {
9191
// TODO: this can't be correct... but it looks like it is
9292
root_path: args.project_id,
@@ -99,8 +99,8 @@ impl SyncRequestHandler for ExecuteCommand {
9999
}
100100
Ok(RegisteredCommands::RunTest(args)) => {
101101
let tx = session
102-
.orwie12_tx
103-
.send(Orwie12Message::FrontendMessage(
102+
.webview_router_input_tx
103+
.send(WebviewRouterMessage::FrontendMessage(
104104
FrontendMessage::run_test {
105105
function_name: args.function_name,
106106
test_name: args.test_case_name,

engine/language_server/src/server/api/requests/go_to_definition.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use lsp_types::{
44
self, request as req, GotoDefinitionParams, GotoDefinitionResponse, Location, Position, Range,
55
Url,
66
};
7-
use playground_server::{FrontendMessage, Orwie12Message};
7+
use playground_server::{FrontendMessage, WebviewRouterMessage};
88

99
use crate::{
1010
baml_project::{position_utils::get_word_at_position, trim_line, BamlRuntimeExt},
@@ -115,8 +115,8 @@ impl SyncRequestHandler for GotoDefinition {
115115
{
116116
if let Err(e) =
117117
session
118-
.orwie12_tx
119-
.send(Orwie12Message::FrontendMessage(
118+
.webview_router_input_tx
119+
.send(WebviewRouterMessage::FrontendMessage(
120120
FrontendMessage::select_function {
121121
root_path: guard.root_path().to_string_lossy().to_string(),
122122
function_name: function.name.clone(),

engine/language_server/src/session.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use index::DocumentController;
1313
use itertools::any;
1414
use lsp_types::{ClientCapabilities, TextDocumentContentChangeEvent, Url};
1515
use parking_lot::Mutex;
16-
use playground_server::{FrontendMessage, Orwie12Message, Reofji32Message};
16+
use playground_server::{FrontendMessage, WebviewNotification, WebviewRouterMessage};
1717
use serde_json::Value;
1818

1919
pub(crate) use self::{capabilities::ResolvedClientCapabilities, settings::AllSettings};
@@ -52,8 +52,8 @@ pub struct Session {
5252
pub baml_settings: BamlSettings,
5353

5454
pub playground_port: u16,
55-
pub orwie12_tx: broadcast::Sender<Orwie12Message>,
56-
pub reofji32_tx: broadcast::Sender<Reofji32Message>,
55+
pub webview_router_input_tx: broadcast::Sender<WebviewRouterMessage>,
56+
pub webview_router_to_websocket_tx: broadcast::Sender<WebviewNotification>,
5757
}
5858

5959
impl Clone for Session {
@@ -65,8 +65,8 @@ impl Clone for Session {
6565
resolved_client_capabilities: self.resolved_client_capabilities.clone(),
6666
baml_settings: self.baml_settings.clone(),
6767
playground_port: self.playground_port,
68-
orwie12_tx: self.orwie12_tx.clone(),
69-
reofji32_tx: self.reofji32_tx.clone(),
68+
webview_router_input_tx: self.webview_router_input_tx.clone(),
69+
webview_router_to_websocket_tx: self.webview_router_to_websocket_tx.clone(),
7070
}
7171
}
7272
}
@@ -78,8 +78,8 @@ impl Session {
7878
global_settings: ClientSettings,
7979
workspace_folders: &[(Url, ClientSettings)],
8080
playground_port: u16,
81-
orwie12_tx: broadcast::Sender<Orwie12Message>,
82-
reofji32_tx: broadcast::Sender<Reofji32Message>,
81+
webview_router_input_tx: broadcast::Sender<WebviewRouterMessage>,
82+
webview_router_to_websocket_tx: broadcast::Sender<WebviewNotification>,
8383
client_version: Option<String>,
8484
) -> anyhow::Result<Self> {
8585
let mut projects = HashMap::new();
@@ -129,8 +129,8 @@ impl Session {
129129
baml_settings
130130
},
131131
playground_port,
132-
orwie12_tx,
133-
reofji32_tx,
132+
webview_router_input_tx,
133+
webview_router_to_websocket_tx,
134134
})
135135
}
136136

@@ -480,15 +480,15 @@ mod tests {
480480
let global_settings = ClientSettings::default();
481481
let workspace_folders = vec![]; // Start with empty workspace
482482

483-
let (orwie12_tx, _) = broadcast::channel(1);
483+
let (webview_router_input_tx, _) = broadcast::channel(1);
484484

485485
Session::new(
486486
&client_capabilities,
487487
position_encoding,
488488
global_settings,
489489
&workspace_folders,
490490
0,
491-
orwie12_tx,
491+
webview_router_input_tx,
492492
None, // No client_version for this test
493493
)
494494
.unwrap()

engine/language_server/src/tests.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,18 +127,18 @@ pub fn new_test_server(worker_threads: NonZeroUsize) -> anyhow::Result<TestServe
127127
)
128128
.unwrap();
129129

130-
let (orwie12_tx, orwie12_rx) = broadcast::channel(1);
131-
let (reofji32_tx, _) = broadcast::channel(1);
130+
let (webview_router_input_tx, webview_router_input_rx) = broadcast::channel(1);
131+
let (webview_router_to_websocket_tx, _) = broadcast::channel(1);
132132

133133
let server = Server::new_with_connection(
134134
worker_threads,
135135
connection,
136136
init_params,
137137
ServerArgs {
138138
tokio_runtime: tokio::runtime::Runtime::new().unwrap(),
139-
reofji32_tx,
140-
orwie12_rx,
141-
orwie12_tx,
139+
webview_router_to_websocket_tx,
140+
webview_router_input_rx,
141+
webview_router_input_tx,
142142
playground_port: 0,
143143
proxy_port: 0,
144144
},

0 commit comments

Comments
 (0)