Basic IPC testing

This commit is contained in:
Hazel Layne Aranda 2021-05-08 22:50:22 -04:00
parent 2c269e78b6
commit ba740808f1
4 changed files with 62 additions and 2 deletions

View File

@ -1 +1,17 @@
fn main() {}
use std::io::Write;
use deerwm::commands;
use nanoserde::SerBin;
fn main() {
let mut cmd_fifo = unix_named_pipe::open_write(commands::DEFAULT_PIPE)
.expect("failed to open fifo for writing");
let quit_cmd = commands::Command::Quit;
let mut cmd_buffer = Vec::new();
quit_cmd.ser_bin(&mut cmd_buffer);
cmd_fifo
.write_all(&cmd_buffer[..])
.expect("failed to write to fifo");
}

View File

@ -1 +1,36 @@
fn main() {}
use commands::Command;
use nanoserde::DeBin;
use std::io::Read;
use deerwm::commands;
fn main() {
if let Err(e) = unix_named_pipe::create(commands::DEFAULT_PIPE, None) {
match e.kind() {
std::io::ErrorKind::AlreadyExists => {}
_ => panic!("{}", e),
}
}
let mut cmd_fifo =
unix_named_pipe::open_read(commands::DEFAULT_PIPE).expect("failed to open fifo");
let mut cmd_buffer = [0; 256];
'run: loop {
if let Ok(n) = cmd_fifo.read(&mut cmd_buffer) {
if n > 0 {
println!("{:?}", &cmd_buffer[..n]);
if let Ok(cmd) = Command::de_bin(&mut 0, &cmd_buffer[..n]) {
match cmd {
Command::Quit => {
println!("Recieved quit command!");
break 'run;
},
}
}
}
}
}
std::fs::remove_file(commands::DEFAULT_PIPE).expect("failed to create fifo");
}

8
src/commands.rs Normal file
View File

@ -0,0 +1,8 @@
use nanoserde::{DeBin, SerBin};
pub const DEFAULT_PIPE: &str = "/tmp/deerwm";
#[derive(Clone, Debug, DeBin, SerBin)]
pub enum Command {
Quit
}

View File

@ -0,0 +1 @@
pub mod commands;