aboutsummaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
authorKunal Mohan <kunalmohan99@gmail.com>2021-02-13 13:33:32 +0530
committerKunal Mohan <kunalmohan99@gmail.com>2021-05-04 20:47:49 +0530
commit2943dc7b3bf138b94a9b2685fc1b80ee9d2d1ec4 (patch)
treeeae7726fc953e0462948430b8417ebab20f855cc /src/server
parentundo some changes (diff)
downloadsl0ppij-2943dc7b3bf138b94a9b2685fc1b80ee9d2d1ec4.tar.gz
sl0ppij-2943dc7b3bf138b94a9b2685fc1b80ee9d2d1ec4.tar.xz
sl0ppij-2943dc7b3bf138b94a9b2685fc1b80ee9d2d1ec4.zip
Got things working! But we are loosing data in transmission :( PS: There are debug logs in there
Diffstat (limited to 'src/server')
-rw-r--r--src/server/mod.rs27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/server/mod.rs b/src/server/mod.rs
index f739d0bc..aa8aad8d 100644
--- a/src/server/mod.rs
+++ b/src/server/mod.rs
@@ -109,7 +109,7 @@ pub fn start_server(
command_is_executing.done_closing_pane();
}
PtyInstruction::Quit => {
- break;
+ //break;
}
}
}
@@ -120,14 +120,25 @@ pub fn start_server(
.name("ipc_server".to_string())
.spawn({
move || {
+ let mut km = 0;
for stream in listener.incoming() {
match stream {
Ok(stream) => {
let send_app_instructions = send_app_instructions.clone();
let send_pty_instructions = send_pty_instructions.clone();
- thread::spawn(move || {
- handle_stream(send_pty_instructions, send_app_instructions, stream);
- });
+ let nm = format!("{}", km);
+ thread::Builder::new()
+ .name(nm)
+ .spawn(move || {
+ handle_stream(
+ send_pty_instructions,
+ send_app_instructions,
+ stream,
+ km,
+ );
+ })
+ .unwrap();
+ km += 1;
}
Err(err) => {
panic!("err {:?}", err);
@@ -145,6 +156,7 @@ fn handle_stream(
mut send_pty_instructions: SenderWithContext<PtyInstruction>,
mut send_app_instructions: SenderWithContext<AppInstruction>,
mut stream: std::os::unix::net::UnixStream,
+ km: u32,
) {
let mut buffer = [0; 65535]; // TODO: more accurate
loop {
@@ -152,11 +164,16 @@ fn handle_stream(
.read(&mut buffer)
.expect("failed to parse ipc message");
let (mut err_ctx, decoded): (ErrorContext, ApiCommand) =
- bincode::deserialize(&buffer[..bytes]).expect("failed to deserialize ipc message");
+ match bincode::deserialize(&buffer[..bytes]) {
+ Ok(d) => d,
+ Err(e) => break,
+ };
err_ctx.add_call(ContextType::IPCServer);
send_pty_instructions.update(err_ctx);
send_app_instructions.update(err_ctx);
+ eprintln!("Server {} Received {:?}", km, decoded);
+
match decoded {
ApiCommand::OpenFile(file_name) => {
let path = PathBuf::from(file_name);