diff options
author | Kunal Mohan <kunalmohan99@gmail.com> | 2021-05-21 01:32:58 +0530 |
---|---|---|
committer | Kunal Mohan <kunalmohan99@gmail.com> | 2021-05-22 22:19:50 +0530 |
commit | b8acf190710e97092def6ef3adfe44e992ca140c (patch) | |
tree | c8adb9732b6230481e899955b9cdd694770bdca2 /zellij-server | |
parent | 61aa1045764db63734532486cab0500e5828daad (diff) |
Use Action enum for Quit and detach instead of separate messages under ClientToServerMsg
Diffstat (limited to 'zellij-server')
-rw-r--r-- | zellij-server/src/lib.rs | 2 | ||||
-rw-r--r-- | zellij-server/src/route.rs | 26 |
2 files changed, 19 insertions, 9 deletions
diff --git a/zellij-server/src/lib.rs b/zellij-server/src/lib.rs index a52ba9f49..586bd3e6e 100644 --- a/zellij-server/src/lib.rs +++ b/zellij-server/src/lib.rs @@ -49,11 +49,9 @@ pub(crate) enum ServerInstruction { impl From<ClientToServerMsg> for ServerInstruction { fn from(instruction: ClientToServerMsg) -> Self { match instruction { - ClientToServerMsg::ClientExit => ServerInstruction::ClientExit, ClientToServerMsg::NewClient(pos, opts, options) => { ServerInstruction::NewClient(pos, opts, options) } - ClientToServerMsg::DetachSession => ServerInstruction::DetachSession, _ => unreachable!(), } } diff --git a/zellij-server/src/route.rs b/zellij-server/src/route.rs index 408e1e1e2..6804fdf78 100644 --- a/zellij-server/src/route.rs +++ b/zellij-server/src/route.rs @@ -15,7 +15,13 @@ use zellij_utils::{ ipc::ClientToServerMsg, }; -fn route_action(action: Action, session: &SessionMetaData, os_input: &dyn ServerOsApi) { +fn route_action( + action: Action, + session: &SessionMetaData, + os_input: &dyn ServerOsApi, + to_server: &SenderWithContext<ServerInstruction>, +) -> bool { + let mut should_break = false; match action { Action::Write(val) => { session @@ -182,9 +188,17 @@ fn route_action(action: Action, session: &SessionMetaData, os_input: &dyn Server .send_to_screen(ScreenInstruction::UpdateTabName(c)) .unwrap(); } + Action::Quit => { + to_server.send(ServerInstruction::ClientExit).unwrap(); + should_break = true; + } + Action::Detach => { + to_server.send(ServerInstruction::DetachSession).unwrap(); + should_break = true; + } Action::NoOp => {} - Action::Quit => panic!("Received unexpected action"), } + should_break } pub(crate) fn route_thread_main( @@ -197,13 +211,11 @@ pub(crate) fn route_thread_main( err_ctx.update_thread_ctx(); let rlocked_sessions = session_data.read().unwrap(); match instruction { - ClientToServerMsg::ClientExit | ClientToServerMsg::DetachSession => { - to_server.send(instruction.into()).unwrap(); - break; - } ClientToServerMsg::Action(action) => { if let Some(rlocked_sessions) = rlocked_sessions.as_ref() { - route_action(action, rlocked_sessions, &*os_input); + if route_action(action, rlocked_sessions, &*os_input, &to_server) { + break; + } } } ClientToServerMsg::TerminalResize(new_size) => { |