Basic IPC testing
This commit is contained in:
		
							parent
							
								
									2c269e78b6
								
							
						
					
					
						commit
						ba740808f1
					
				
					 4 changed files with 62 additions and 2 deletions
				
			
		|  | @ -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"); | ||||
| } | ||||
|  |  | |||
|  | @ -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
									
								
							
							
						
						
									
										8
									
								
								src/commands.rs
									
										
									
									
									
										Normal 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 | ||||
| } | ||||
|  | @ -0,0 +1 @@ | |||
| pub mod commands; | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue