diff options
| author | Kunal Mohan <kunalmohan99@gmail.com> | 2021-03-29 22:43:54 +0530 |
|---|---|---|
| committer | Kunal Mohan <kunalmohan99@gmail.com> | 2021-05-04 20:48:14 +0530 |
| commit | ea732166e35368b423de348a41db41662c3686ad (patch) | |
| tree | 32c20dac42250ae0bc264030e3278f6519aa3ccd /src/server | |
| parent | split start into start_server and start_client (diff) | |
| download | sl0ppij-ea732166e35368b423de348a41db41662c3686ad.tar.gz sl0ppij-ea732166e35368b423de348a41db41662c3686ad.tar.xz sl0ppij-ea732166e35368b423de348a41db41662c3686ad.zip | |
client side threads should send messages directly to server and router threads should do the actual routing
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/mod.rs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/server/mod.rs b/src/server/mod.rs index 960b9244..ea859302 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -165,11 +165,21 @@ pub fn start_server(mut os_input: Box<dyn ServerOsApi>, opts: CliArgs) -> thread .name("server_router".to_string()) .spawn({ let os_input = os_input.clone(); + let mut send_os_instructions = send_os_instructions.clone(); + let mut send_pty_instructions = send_pty_instructions.clone(); move || loop { let (instruction, err_ctx) = os_input.server_recv(); send_server_instructions.update(err_ctx); + send_pty_instructions.update(err_ctx); + send_os_instructions.update(err_ctx); match instruction { ServerInstruction::Exit => break, + ServerInstruction::ToPty(instruction) => { + send_pty_instructions.send(instruction).unwrap(); + } + ServerInstruction::OsApi(instruction) => { + send_os_instructions.send(instruction).unwrap(); + } _ => { send_server_instructions.send(instruction).unwrap(); } @@ -213,15 +223,9 @@ pub fn start_server(mut os_input: Box<dyn ServerOsApi>, opts: CliArgs) -> thread send_pty_instructions.send(PtyInstruction::NewTab).unwrap(); os_input.add_client_sender(buffer_path); } - ServerInstruction::ToPty(instr) => { - send_pty_instructions.send(instr).unwrap(); - } ServerInstruction::ToScreen(instr) => { os_input.send_to_client(ClientInstruction::ToScreen(instr)); } - ServerInstruction::OsApi(instr) => { - send_os_instructions.send(instr).unwrap(); - } ServerInstruction::DoneClosingPane => { os_input.send_to_client(ClientInstruction::DoneClosingPane); } |
